Tengo 3 esquemas modelo en mi proyecto:
Proveedores: id + nombre
Artículos: id + nombre + ID de proveedor
categorías: id + nombre + ItemId
Necesito crear un esquema de consulta de prisma que me permita recuperar categorías, incluidos los detalles del artículo y el proveedor.
los modelos 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") }
El punto final expreso es el siguiente:
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); } });
El código tal como está ahora, devolverá una lista de categorías junto con los artículos de cada categoría, sin embargo, el artículo incluirá el ID del proveedor en lugar de los detalles del proveedor. ¿Qué debo agregar al código para obtener detalles del proveedor sin el bucle foreach?
Puede obtener los vendors
junto con los items
mientras busca la categoría a través de esta consulta.
let items = await prisma.category.findMany({ include: { item: { include: { vendor: true, }, }, }, }); console.log(items);
Aquí está la respuesta de muestra para la consulta:
[ { "id": 1, "name": "mobile", "itemId": 1, "item": { "id": 1, "name": "Iphone", "vendorId": 1, "vendor": { "id": 1, "name": "Apple Inc" } } } ]