【发布时间】:2019-07-20 23:52:35
【问题描述】:
我有点卡在这个问题上。 我已阅读有关中间件和一些 stackoverflow 问题的所有 mongoose 文档,但无法找出如何在不重复查询的情况下解决我的问题(查找然后删除)。
通常,当从模型调用而不是从文档调用时,删除前的中间件不会触发。但是根据the doc,如果我添加 {query: true},我的函数将从模型查询中调用。
我使用的是最新的猫鼬版本(5.4.16)
这是我的代码。
let mySchema= new mongoose.Schema({
name: String,
comment: String
}, { usePushEach: true });
mySchema.pre('remove', { document: true }, function() {
console.log('remove document');
});
mySchema.pre('remove', { query: true }, function() {
console.log('remove');
});
const MyModel = mongoose.model('MyModel', mySchema);
这里的电话
MyModel.deleteOne({ _id: modelId }, (errorRm) => {
if (errorRm) {
return res.json({ success: false, message: `${errorRm.message}` });
}
return res.json({ success: true, message: 'Model successfully removed' });
});
模型已成功删除,但“pre”函数没有记录任何内容...
欢迎任何帮助。
【问题讨论】:
标签: javascript node.js mongodb mongoose mongoose-schema