mongodb Mongo连接器当前不支持级联删除

u5i3ibmn  于 2023-03-22  发布在  Go
关注(0)|答案(3)|浏览(130)

我正在使用Prisma,我想支持CASCADE删除,但尽管我已经做了文档中提到的一切,我仍然没有让它工作
这是我尝试部署Prisma时收到的错误

Errors:

  Restaurant
    ✖ The Mongo connector currently does not support Cascading Deletes, but the field `foods` defines cascade behavior. Please remove the onDelete argument.}

下面是代码

type Restaurant {
      id: ID! @id
      name: String!
      foods: [Food!]! @relation(onDelete: CASCADE, name: "FoodToRestaurant", link: INLINE)
    }

    type Food {
      id: ID! @id
      name: String!
      desc: String
      price: Float!
      category: Category!
      restaurant: Restaurant! @relation(name: "FoodToRestaurant", onDelete: SET_NULL)
    }

我希望当餐厅被删除时,所有的食物也应该被删除
我已经用Prisma PostgreSQL删除了CASCADE,但现在我想在这个应用程序中使用MongoDB

lmvvr0a8

lmvvr0a81#

由于这是不可能的,您应该手动管理它。
意味着你应该递归地删除所有相关的实体。
例如,如果它是您的db schema:
问题-〉评论-〉评分
如果你想删除一个问题,你应该删除所有与该问题相关的评论,如果你想删除一个评论,你应该删除所有分配给该评论的评级。所以你需要一些递归函数来删除这些实体。

function deleteQuestion(questionId) {
  for each comment related to questionID
    deleteComment(commentId)
  delete(questionId)       
}

function deleteComment(commentId) {
  for each rate related to commentId
    deleteRate(rateId)
  delete(commentId)       
}

function deleteRate(rateId) {
  delete(rateId)       
}
envsm3lx

envsm3lx2#

当前mongodb prisma不支持级联删除.如果你有它在你的schema请删除它.

chy5wohz

chy5wohz3#

使用引用操作,您可以对Prisma 3.7.0版及更高版本进行级联删除。请查看引用操作类型表https://www.prisma.io/docs/concepts/components/prisma-schema/relations/referential-actions#cascade

相关问题