mongoose – 无论如何,以防止中间件保存挂钩在特定条件下执行(例如被保存为子文档)?
我有一个架构Foo有前后保存钩子。
对于我正在编写的一个特殊的debugging应用程序,我抓取所有活动的Foo对象。 然后,将它们保存为一个子文档作为历史模式的一部分。
当我将它保存为子文档的一部分时,我不希望我的前/后保存挂钩执行。
处理这个问题的最好方法是什么?
我想避免必须从Foo对象中提取所有数据,然后保存在一个新的非mongoose对象中。
你可以为你的Foo对象定义一个字段,例如hookEnabled
,你可以在你的钩子函数中检查它。 让我举一个例子;
Foo = new Schema({ ... hookEnabled:{ type: Boolean, required: false, default: true } ... });
并在你的钩子;
Foo.pre('save', function(next){ self = this if (self.hookEnabled) { // dou your job here next(); } else { // do nothing next(); } });
在调用save函数之前,可以将hookEnabled字段设置为false,
var fooModel = new Foo(); fooModel.hookEnabled = false;
希望能帮助到你