【问题标题】:I am using PostgreSQL with GraphQL when I try to delete any company that has relation with other tables. it shows GraphQL error:当我尝试删除与其他表有关系的任何公司时,我正在使用 PostgreSQL 和 GraphQL。它显示 GraphQL 错误:
【发布时间】:2020-06-16 21:27:52
【问题描述】:

表格架构

type Company {
  id: ID! @unique
  name: String!
  users: [CompanyUser!]! @relation(name: "CompanyUserToCompany")
  areas: [Area!]! @relation(name: "Company_areas")
  positions: [Position!]! @relation(name: "Company_positions", onDelete: CASCADE)

}

type Position {
  id: ID! @unique
  name: String!
  users: [CompanyUser!]! @relation(name: "Position_company_user")
  company: Company! @relation(name: "Position_company", onDelete: CASCADE)

}

显示此 GraphQL 错误

错误:GraphQL 错误:您尝试进行的更改将违反 Company 和 Position 之间所需的关系“Position_company”

【问题讨论】:

    标签: postgresql graphql apollo-server prisma prisma-graphql


    【解决方案1】:

    如果您使用的是 prisma2,我想我的回答可以帮助您。

    • 不要按公司删除项目。 (例如:prisma.company.delete({where: ~ })

    • 按位置删除项目。 (例如prisma.position.delete({where:{company:{id:companyId}}})

    • 如果更改字段属性不起作用并且可以,则将公司字段设为可为空(不需要)。然后,先删除公司,再删除职位(因为我猜你想要级联,对吧?)

    别忘了使用 await!

    我以这种方式解决了这个问题。但我不确定onDelete:CASCADE 的情况。 我真的希望 prisma2 尽快发布级联..!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-26
      • 2021-11-30
      • 2018-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-01
      • 1970-01-01
      相关资源
      最近更新 更多