javascript - NodeJs Prisma ორჯერ ჩართვა თვისება
ჩემი პროექტში 3 მოდელის სქემა მაქვს:
გაყიდვების სფერო: აიდი + სახელი
ელემენტები: id + სახელი + მწარმოებლის Id
კატეგორიები: ID + სახელი + ნივთის ID
მჭირდება შევქმნა Prisma კითხვის სქემა, რომელიც საშუალებას მომცემს მივიღო კატეგორიები, მათ შორის ნივთის და ვენდორის დეტალები.
პრიზმის მოდელები:
model Vendor {
id Int @id @default(autoincrement())
name String @db.VarChar(255)
Item Item[]
@@map("Vendors")
}
model Item {
id Int @id @default(autoincrement())
name String @db.VarChar(255)
vendor Vendor @relation(fields: [vendorId], references: [id])
vendorId Int
Category Category[]
@@map("Items")
}
model Category {
id Int @id @default(autoincrement())
name String @db.VarChar(255)
item Item @relation(fields: [itemId], references: [id])
itemId Int
@@map("Categories")
}
ექსპრეს ენდპოინტი არის შემდეგი:
router.get('', async (req, res) => {
try {
let items = await prisma.Category.findMany({
include: {
item: true
},
});
res.status(200).json(items)
} catch (error) {
res.json(error.message);
}
});
აპი არსებულ კოდში, ის დააბრუნებს კატეგორიების სიას თითოეული კატეგორიის ნივთებთან ერთად, თუმცა, ნივთი შეიცავს vendorId-ს, vendor-ის დეტალების ნაცვლად. რა უნდა ვუმატო კოდს, რათა მივიღო vendor-ის დეტალები foreach loop-ის გარეშე?
პასუხი #1
შეგიძლიათ მიიღოთ მომწოდებლები ერთად საქონელთან კატეგორიის მიღებისას ამ კვანძის გამოყენებით.
let items = await prisma.category.findMany({
include: {
item: {
include: {
vendor: true,
},
},
},
});
console.log(items);
აქ არის პასუხის ნიმუში კითხვისთვის:
[
{
"id": 1,
"name": "mobile",
"itemId": 1,
"item": {
"id": 1,
"name": "Iphone",
"vendorId": 1,
"vendor": {
"id": 1,
"name": "Apple Inc"
}
}
}
]
