我想知道像这样的预保存 Mongoose 钩子(Hook)中脏 Prop 的“干净”值(value)是什么:
UserSchema.pre('save', function(next) {
var user = this;
if (user.isModified('password')){
//i want to know what the value of user.password was before it was changed
}
next()
}
是否可以在不在数据库中查找的情况下查找旧值?
最佳答案
默认情况下,不存储旧值。您需要做的是使用 post init Hook ( Mongoose 功能)跟踪旧数据。
我们所做的是将原始文档的副本附加到从 MongoDB 中提取的所有项目。我们为每个需要获取预脏数据进行比较的模式编写了这段代码:
schema.post( 'init', function() {
this._original = this.toObject();
} );
NodeJS 非常高效,并且在可能的情况下会在写入时进行复制,因此除非您修改整个文档,否则您不会看到双倍的内存消耗。只有这样,_original 才会实际消耗双倍的内存。
关于node.js - Mongoose 在预保存 Hook 中获取数据库值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18192804/