我试图找到对象是否在预存储中更改并相应地执行某些操作。 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();
});
即使我没有改变任何东西,它也会返回false!
答案 0 :(得分:20)
首先,您根本不需要original
对象。您可以通过pre
在this
挂钩中访问它。其次post
挂钩仅在执行所有pre
挂钩后执行,因此您的代码根本没有任何意义(check mongoose docs)。
您可以通过查看pre
挂钩中的isModified
进行检查,然后删除post
挂钩。
OrderSchema.pre('save', function(next) {
if(!this.isModified()){
//not modified
}
next();
});
<强>更新强>
为了检查某些属性是否被修改,将属性名称作为参数传递给isModified
函数:
if (this.isModified("some-property")) {
// do something
}