javascript - La funzione findMany di Prisma non restituisce i dati relazionali
Sto cercando di popolare i miei dati con dati relazionali usando Prisma 2.28.0, ecco il mio
Modello Schema.prisma qui sotto
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model Product {
id Int @id @default(autoincrement())
name String @db.VarChar(255)
transactions Transaction[]
}
model Transaction {
id BigInt @id @default(autoincrement())
quantity Int
time Int
product Product? @relation(fields: [productId], references: [id])
productId Int?
}
la funzione che sto cercando di recuperare dati.
const { PrismaClient }=require("@prisma/client")
const prisma = new PrismaClient()
async function checkPrismaConnection(){
try {
const result=await prisma.product.findMany();
console.log(result);
}catch (e) {
console.log(e);
}
}
checkPrismaConnection();
OutPut
[
{ id: 1, name: 'John Doe' },
{ id: 2, name: 'Masum' },
{ id: 3, name: 'Rezaul' }
]
Risultato del database delle transazioni
Database dei prodotti
Non so perché il mio findMany() non restituisca i dati del database relazionale. Grazie
Risposta n. 1
Suggerisco di leggere la documentazione, in particolare questo capitolo e quelli successivi. Nel loro esempio, hanno un Author e un Post, dove Post ha un campo author che punta a un Author. Il loro codice appare così:
const getPosts = await prisma.post.findMany({
where: {
title: {
contains: 'cookies',
},
},
include: {
author: true, // Return all fields
},
})
Il capitolo "Include relazioni profondamente annidate", un po' più in basso, utilizza in realtà un campo .category che è anch'esso un array, come nel tuo esempio con .transactions.
Risposta n. 2
Devi impostare esplicitamente include su true.
Quindi il codice per te sarà così
const { PrismaClient }=require("@prisma/client")
const prisma = new PrismaClient()
async function checkPrismaConnection(){
try {
const result=await prisma.product.findMany({
include: {
transaction: true,
},
});
console.log(result);
}catch (e) {
console.log(e);
}
}
checkPrismaConnection();

