如何在堆栈 MERN 中建立这种关系?
Posted
技术标签:
【中文标题】如何在堆栈 MERN 中建立这种关系?【英文标题】:How make this relation in stack MERN? 【发布时间】:2021-04-19 03:33:06 【问题描述】:我有网上商店,其中存在产品和类别。该产品在模型领域有
category:
type: Types.ObjectId,
ref: "Category",
required: [true, "Product category is required"]
,
当我添加新产品时,选择类别(列表中存在)并添加 id。
但如果删除类别,产品的 categoryId 不存在。是否可以实现 wordpress 中使用的功能。例如,如果在 wordpress 中我删除了类别,则所有具有此类别的帖子,都转移到未分类的类别中(此类别自动创建且无法删除)
【问题讨论】:
【参考方案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
模型调用 remove
或 delete
函数时,将调用此钩子。因此,当一个类别被删除时,此挂钩将更新您的 uncategorizedId
的所有引用,以确保任何产品都有一个不存在的 category
引用。
【讨论】:
以上是关于如何在堆栈 MERN 中建立这种关系?的主要内容,如果未能解决你的问题,请参考以下文章