【问题标题】:How make this relation in stack MERN?如何在堆栈 MERN 中建立这种关系?
【发布时间】:2021-04-19 03:33:06
【问题描述】:

我有网上商店,其中存在产品和类别。该产品在模型领域有

 category: {
    type: Types.ObjectId,
    ref: "Category",
    required: [true, "Product category is required"]
  },

当我添加新产品时,选择类别(列表中存在)并添加 id。

但如果删除类别,产品的 categoryId 不存在。是否可以实现 wordpress 中使用的功能。例如,如果在 wordpress 中我删除了类别,则所有具有此类别的帖子,都转移到未分类的类别中(此类别自动创建且无法删除)

【问题讨论】:

    标签: mongodb mongoose mern


    【解决方案1】:

    如果我理解正确,您可以使用mongoose middlewares 来“级联删除”。因此,当一个类别被删除时,您可以编码每个产品现在都“未分类”

    您可以在调用 delete 函数并执行以下操作时使用 pre 钩子并执行以下操作(未经您的架构测试):

    category.pre(/(?:delete|remove)/, function(next) {
        var id = this.getQuery()._id; //get category _id
        product.updateMany({
          category: id
        },{
          $set:{
            category:yourUncategorizedId
          }
        }).then(next()).catch(e => next(e))
    })
    

    因此,在这种情况下,regex 匹配用于进入钩子。

    当从 category 模型调用 removedelete 函数时,将调用此钩子。因此,当一个类别被删除时,此挂钩将更新您的 uncategorizedId 的所有引用,以确保任何产品都有一个不存在的 category 引用。

    【讨论】:

      猜你喜欢
      • 2022-08-07
      • 2014-08-13
      • 2020-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-21
      • 2015-01-14
      • 1970-01-01
      相关资源
      最近更新 更多