gpt4 book ai didi

node.js - 查找对象是否在预保存钩子(Hook) Mongoose 中更改

转载 作者:IT老高 更新时间:2023-10-28 13:10:01 30 4
gpt4 key购买 nike

我正在尝试查找对象是否在预保存中发生更改并相应地执行一些操作。以下是我的代码

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!

最佳答案

首先,您根本不需要 original 对象。您可以通过 thispre Hook 中访问它。其次, post 钩子(Hook)仅在所有 pre 钩子(Hook)执行后才执行,因此您的代码根本没有任何意义( check mongoose docs )。

您可以通过检查 isModified 进行检查在您的 pre 钩子(Hook)中并完全删除 post 钩子(Hook)。

OrderSchema.pre('save', function(next) {    
if(!this.isModified()){
//not modified
}
next();
});

更新

为了检查某些属性是否被修改,将属性名称作为参数传递给 isModified 函数:

if (this.isModified("some-property")) {
// do something
}

关于node.js - 查找对象是否在预保存钩子(Hook) Mongoose 中更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27764524/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com