查找对象是否在预保存挂钩猫鼬中更改
Find if object is changed in pre-save hook mongoose
我正在尝试查找对象是否在预保存中更改并相应地执行一些操作。以下是我的代码
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();
});
它 returns 即使我不做任何更改也是错误的!
首先,您根本不需要 original
对象。您可以通过 this
在 pre
挂钩中访问它。其次 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
}
我正在尝试查找对象是否在预保存中更改并相应地执行一些操作。以下是我的代码
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();
});
它 returns 即使我不做任何更改也是错误的!
首先,您根本不需要 original
对象。您可以通过 this
在 pre
挂钩中访问它。其次 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
}