javascript - La fonction findMany de Prisma ne retourne pas les données relationnelles
J'essaie de remplir mes données avec des données relationnelles en utilisant Prisma 2.28.0, voici mon
Modèle Schema.prisma ci-dessous
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 fonction que j'essaie de récupérer des données.
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' }
]
Résultat de la base de données de transaction
Base de données des produits
Je ne sais pas pourquoi mon findMany() ne renvoie pas les données de la base de données relationnelle. Merci
Réponse #1
Je suggère de lire la documentation, en particulier ce chapitre et ceux qui suivent. Dans leur exemple, ils ont un Author et un Post, où Post a un champ author pointant vers un Author. Leur code ressemble à ceci :
const getPosts = await prisma.post.findMany({
where: {
title: {
contains: 'cookies',
},
},
include: {
author: true, // Return all fields
},
})
Le chapitre « Inclure des relations profondément imbriquées » un peu plus bas utilise en fait un champ .category qui est également un tableau, comme dans votre exemple avec .transactions.
Réponse #2
Vous devez explicitement définir include sur true.
Donc le code ressemblera à ceci pour vous
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();

