如何使用 MongoDB 在 Prisma ORM 中创建类别及其子类别

Posted

技术标签:

【中文标题】如何使用 MongoDB 在 Prisma ORM 中创建类别及其子类别【英文标题】:How to create Categories and its SubCategory in Prisma ORM using MongoDB 【发布时间】:2019-05-29 21:46:22 【问题描述】:
type Category 
  id: ID! @id
  name: String!


type SubCategoryLevel1 
  id: ID! @id
  name: String!
  parentCategory: Category! @relation(link: INLINE)


type SubCategoryLevel2 
  id: ID! @id
  name: String!
  parentCategory: SubCategoryLevel1! @relation(link: INLINE)

如果我的Category 级别没有确定怎么办,我正在使用Prisma ORM 和 MongoDB。

【问题讨论】:

【参考方案1】:

不确定我是否正确理解了您的问题。您能否详细介绍一下您要做什么?

你是否在尝试任意建立深度嵌套的自我关系?然后你可以这样做:

type Category 
  id: ID! @id
  name: String!
  subCategory: Category @relation(name:"SubToParent"link: INLINE)
  parentCategory: Category @relation(name: "SubToParent")

创建三个级别将适用于此查询:

mutation createCategory 
  createCategory(
    data: 
      name: "firstLevel"
      subCategory: 
        create: 
          name: "secondLevel"
          subCategory:  create:  name: "thirdLevel"  
        
      
    
  ) 
    name
  

查询类别会给你这样的回应:

query allCategories 
  categories 
    name
    subCategory 
      name
    
    parentCategory 
      name
    
  



  "data": 
    "categories": [
      
        "name": "firstLevel",
        "subCategory": 
          "name": "secondLevel"
        ,
        "parentCategory": null
      ,
      
        "name": "secondLevel",
        "subCategory": 
          "name": "thirdLevel"
        ,
        "parentCategory": 
          "name": "firstLevel"
        
      ,
      
        "name": "thirdLevel",
        "subCategory": null,
        "parentCategory": 
          "name": "secondLevel"
        
      
    ]
  

如果不只是更详细地解释您的问题,我希望这会有所帮助。

【讨论】:

如果 parentId 为 null 则它是我的主要类别,否则它是子类别。我无法查询我的 parentId 为空的类别 它会抛出错误还是您不知道如何查询? 当我尝试查询时,我得到了存储在类别中的所有结果,但我想要具有空值的 parentCategory 的数据,我想我在查询中遗漏了一些东西,或者显然我没有写正确的查询。但是,我确实尝试在整个互联网上进行搜索。我试着在下面查询,虽然我知道这是不对的。 ctx.db.query.categories( where: id_not: parent.parentId , info) 如果我理解正确,我认为categories( where: parentCategory: null 应该可以工作。

以上是关于如何使用 MongoDB 在 Prisma ORM 中创建类别及其子类别的主要内容,如果未能解决你的问题,请参考以下文章

使用 Prisma + MongoDB + GraphQL 的嵌套关系返回 null

prisma config connect mongodb 不要使用管理员用户

Prisma 无法使用本地 Mongodb 部署

使用 Prisma ORM 将日期(仅)列作为字符串检索或映射到字符串而无需时间

为啥我在使用 Prisma(React 应用程序)在 Mongodb 中显示和删除时遇到问题?

prisma mongodb 试用