Javascript 为什么使用mongoose中间件;前";是否不调用带有{query:true}的remove?
我在这个问题上有点纠结。 我已经阅读了所有关于中间件和一些stackoverflow问题的mongoose文档,无法找到如何在不重复查询的情况下解决我的问题(查找然后删除) 通常,当从模型而不是从文档调用时,remove上的预中间件不会启动。但根据,如果我添加{query:true},我的函数将从模型查询中调用 我使用最新的monngoose版本(5.4.16) 这是我的密码Javascript 为什么使用mongoose中间件;前";是否不调用带有{query:true}的remove?,javascript,node.js,mongodb,mongoose,mongoose-schema,Javascript,Node.js,Mongodb,Mongoose,Mongoose Schema,我在这个问题上有点纠结。 我已经阅读了所有关于中间件和一些stackoverflow问题的mongoose文档,无法找到如何在不重复查询的情况下解决我的问题(查找然后删除) 通常,当从模型而不是从文档调用时,remove上的预中间件不会启动。但根据,如果我添加{query:true},我的函数将从模型查询中调用 我使用最新的monngoose版本(5.4.16) 这是我的密码 let mySchema= new mongoose.Schema({ name: String, commen
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”功能中未记录任何内容
欢迎提供任何帮助。这是因为您使用的是MyModel.deleteOne()。使用MyModel.remove(),它就会工作 A根据文件: 您可以将选项传递给Schema.pre()和Schema.post(),以切换Mongoose是调用Document.remove()还是Model.remove()的remove()钩子:
这是因为您使用的是MyModel.deleteOne()。使用MyModel.remove(),它就会工作 A根据文件: 您可以将选项传递给Schema.pre()和Schema.post(),以切换Mongoose是调用Document.remove()还是Model.remove()的remove()钩子: 我以前使用过Model.remove(),但这也不起作用。。。但那是在升级猫鼬之前(4.13.4到5.4.16)。你说得对,我只是今早更新了我所有的电话。。。感谢您的帮助我以前使用过Model.remove(),但这也不起作用。。。但那是在升级猫鼬之前(4.13.4到5.4.16)。你说得对,我只是今早更新了我所有的电话。。。谢谢你的帮助