bla*_*k3r 7 mongoose mongodb node.js
我有一个模式Foo,它有前后保存挂钩.
对于我正在编写的特殊调试应用程序,我抓住了所有活动的Foo对象.然后,将它们保存为子文档作为历史模式的一部分.
当我将其保存为子文档的一部分时,我不希望我的前/后保存挂钩执行.
处理这个问题的最佳方法是什么?
我想避免从Foo对象中提取所有数据,然后保存在一个新的非猫鼬对象中.
你可以为你的Foo对象定义一个字段hookEnabled,你可以在你的钩子函数中检查它.让我给你举个例子;
Foo = new Schema({
...
hookEnabled:{
type: Boolean,
required: false,
default: true
}
...
});
Run Code Online (Sandbox Code Playgroud)
在你的钩子里;
Foo.pre('save', function(next){
self = this
if (self.hookEnabled) {
// dou your job here
next();
} else {
// do nothing
next();
}
});
Run Code Online (Sandbox Code Playgroud)
在调用save函数之前,可以将hookEnabled字段设置为false,如:
var fooModel = new Foo();
fooModel.hookEnabled = false;
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你