Después de aprender getServerProps , intenté crear un proyecto que devolviera algunos datos de postgres usando prisma , pero por alguna razón, cuando intento mapear la matriz de publicaciones (ver más abajo), devuelve la matriz como indefinida. Enevn, creo que seguí las reglas de sintaxis en la página Doc, sin suerte hasta ahora. He estado atascado durante mucho tiempo y no sé por qué y qué hice mal. Al menos el código VS reconoce las publicaciones como una matriz, pero la función getServerProps parece que nunca se ejecuta. Gracias por leer, déjame saber tu opinión sobre esto.
posts ) no está definida cuando se reconoce dentro de la función.Prisma y postgres están trabajando en este proyecto
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 }error me sale:



No puede usar getServerSideProps fuera del directorio de pages . Cambie su código para que la llamada prisma esté dentro de su página y las publicaciones se pasen al componente Posts usando accesorios. Por ejemplo, si está mostrando las publicaciones en 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 Nota al margen: no debe crear un PrismaClient cada vez que se llama a getServerSideProps . Cree un archivo prisma.js, inicialícelo allí y reutilícelo cuando lo necesite:
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