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

时间:2019-05-04 14:05:36

标签: mongodb prisma prisma-graphql

我正在使用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

2 个答案:

答案 0 :(得分:0)

当前mongodb pyramida不支持级联删除。如果您的架构中有此文件,请删除它。

答案 1 :(得分:0)

因为这是不可能的,你应该手动管理它。

意味着您应该递归删除所有相关实体。

例如,如果它是您的数据库架构:

问题 -> 评论 -> 评分

如果您想删除一个问题,您应该删除与该问题相关的所有评论,如果您想删除一个评论,您应该删除分配给该评论的所有评分。所以你需要一些递归函数来删除这些实体。

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)       
}