raj*_*aju 14 mongoose mongodb node.js
我试图找到是否在预保存中更改了对象并相应地执行了一些操作.Followinfg是我的代码
var eql = require("deep-eql");
OrderSchema.post( 'init', function() {
this._original = this.toObject();
});
OrderSchema.pre('save', function(next) {
var original = this._original;
delete this._original;
if(eql(this, original)){
//do some actions
}
next();
});
Run Code Online (Sandbox Code Playgroud)
即使我没有改变任何东西,它也会返回false!
Vse*_*nin 23
首先,您根本不需要该original对象.您可以pre通过钩子访问它this.其次,post只有在执行了所有pre挂钩之后才执行钩子,所以你的代码根本没有任何意义(检查mongoose docs).
您可以通过检查钩子进行检查isModified,pre然后取下post钩子.
OrderSchema.pre('save', function(next) {
if(!this.isModified()){
//not modified
}
next();
});
Run Code Online (Sandbox Code Playgroud)
更新
为了检查某些属性是否被修改,将属性名称作为参数传递给isModified函数:
if (this.isModified("some-property")) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8747 次 |
| 最近记录: |