繁体   English   中英

棱镜得到所有的树

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM