[英]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 来触发其他预“删除”挂钩?
所以我想我要理解,我需要知道:
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.