查找对象是否在预保存挂钩猫鼬中更改

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 对象。您可以通过 thispre 挂钩中访问它。其次 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
}