[英]React Next.js: getServerProps is not returning array from prisma
在学习getServerProps之后,我尝试构建一个使用prisma从 postgres 返回一些数据的项目,但由于某种原因,当我尝试映射帖子数组(见下文)时,它返回未定义的数组。 Enevn 我相信我遵循了 Doc 页面上的语法规则,到目前为止还没有运气。 我被困了很长时间,我不知道为什么以及我做错了什么。 至少 VS 代码将帖子识别为数组,但 getServerProps 函数似乎永远不会运行。感谢您的阅读,让我知道您对此的想法。
posts
变量)时未定义。Prisma 和 postgres 正在这个项目中工作
import { PrismaClient } from '@prisma/client'
function Posts({ posts }) {
return (
<div>
<h1 className="text-4xl block text-gray-500 font-bold pt-5 text-center">
Posts
</h1>
<div>
{posts.map((post) => {
<h3>{post.title}</h3>;
})}
</div>
</div>
);
}
export const getServerSideProps = async () => {
const prisma = new PrismaClient()
const posts = await prisma.post.findMany()
return { props: { posts } }
}
export default Posts
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model Post {
id Int @id @default(autoincrement())
title String
content String
}
我得到的错误:
您不能在pages
目录之外使用getServerSideProps
。 更改您的代码,以便 prisma 调用在您的页面内,并且使用 props 将帖子传递给Posts
组件。 例如,如果您在pages/index.js
中显示帖子:
export const getServerSideProps = async () => {
const prisma = new PrismaClient()
const posts = await prisma.post.findMany()
return { props: { posts } }
}
function Home({ posts }) {
return (
<Posts posts={posts}/>
);
}
export default Home
旁注:您不应该在每次调用getServerSideProps
时都创建PrismaClient
。 创建一个 prisma.js 文件,在那里初始化它并在需要时重用它:
import { PrismaClient } from '@prisma/client'
let prisma
if (process.env.NODE_ENV === 'production') {
prisma = new PrismaClient()
} else {
// Ensure the prisma instance is re-used during hot-reloading
// Otherwise, a new client will be created on every reload
globalThis.prisma = globalThis.prisma || new PrismaClient()
prisma = globalThis.prisma
}
export default prisma
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.