繁体   English   中英

预取下挂钩 - Mongoose

[英]Pre remove hook - Mongoose

现在我有一个项目,当我删除该项目时,它会触发预“删除”挂钩以删除一个选项组。

item.remove();
itemSchema.pre('remove', async () => {
  await OptionGroup.find({ _id: { $in: this.optionGroups } })
    .remove()
    .exec();
});

选项组有一个预“删除”挂钩,用于删除选项组引用的选项。

optionGroupSchema.pre('remove', async () => {
  await Item.updateMany(
    { optionGroups: this._id },
    { $pull: { optionGroups: this._id } }
  ).exec();
  await Option.find({ _id: { $in: this.options } })
    .remove()
    .exec();
});

我期待瀑布效应,但相反,只有选项组被删除。 还有一些我不明白的注意事项,比如用find来remove就可以了,但是我不能像这样直接使用remove或者deleteMany:

itemSchema.pre('remove', async () => {
  await OptionGroup.remove({ _id: { $in: this.optionGroups } })
    .exec();
});

我从文档中知道我只能在删除文档时触发一个预“删除”挂钩,但在这个挂钩中,为什么我不能使用 remove 来触发其他预“删除”挂钩?

所以我想我要理解,我需要知道:

  1. 如何触发一个删除(文档)将触发其他人删除的瀑布效果?
  2. 何时使用 deleteMany 与 remove?
  3. deleteOne 或 deleteMany 是否触发预“删除”挂钩?

deleteOne 或 deleteMany 是否触发预“删除”挂钩?

它不会触发删除钩子,您需要改用此语法。

schema.post(/Many$/, function(res) {
  console.log('this fired after you ran `updateMany()` or `deleteMany()`);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM