[英]Prisma get all tree
我正在使用 Prisma 新项目。 我有类别递归关系:
model Category {
id Int @id @default(autoincrement())
name String
children Category[] @relation("CategoryToCategory")
parentId Int?
parent Category? @relation(fields: [parentId], references: [id])
}
这种关系很好,但是为了获得所有孩子的所有类别(完整的树,不仅仅是 1 级),我不知道 Prisma 是否有可能? 它通常被称为急切加载。
有了这个要求,我只得到第一个孩子,但我想得到所有的树,你知道这是否可能吗?
const allCategories = await db.category.findMany({
include: {
parent: true, // return only first level
children: true, // return only first level
},
})
谢谢 !
在这种情况下,您需要明确指定include
所需的级别,因为 Prisma 不支持获取递归关系。
如果您使用 Postgres,另一种选择是使用递归 CTE(通过with
)。
在此处查看文档。 它显示了您想要实现的目标是如何可能的,但对于深层关系可能会变得有点烦人。 这是一个例子:
const allCategories = await db.category.findMany({
include: {
parent: true,
children: {
include: {
category: true
}
}
}
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.