Node.js 如何在升级前的mongoose中间件中访问文档对象?

Node.js 如何在升级前的mongoose中间件中访问文档对象?,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,考虑一下,我有一个这样的猫鼬模式 const mySchema = new mongoose.schema({ val1:Number, val2:Number val_1_isBigger:Boolean}) 现在我想在每次更新操作之前比较val1和val2,因此我想为val_1_设置布尔属性 我的问题是如何在预('update')mongoose插件操作期间访问文档对象。请看以下示例 mySChema.plugin(function(schema, options) { schem

考虑一下,我有一个这样的猫鼬模式

const mySchema = new mongoose.schema({
val1:Number,
val2:Number
val_1_isBigger:Boolean})
现在我想在每次更新操作之前比较val1和val2,因此我想为val_1_设置布尔属性

我的问题是如何在预('update')mongoose插件操作期间访问文档对象。请看以下示例

mySChema.plugin(function(schema, options) {
    schema.pre('update', function(next) {

//Here How Do I compare val1 & val2 before update happens
//and then set value here accordingly

  this.update({}, { $set: { val_1_isBigger: true/false } });

}
}

我所做的是使用_conditions参数获取带有查询id的文档。使用文档,您可以执行必要的操作,然后将新对象设置为使用_update进行更新。 我的代码如下所示:

userSchema.pre('update', function(next) {
    if (this._conditions) {
        _id = this._conditions.id || '';
        User.findOne({ id : _id }).exec().then((user) => {
            if (user.token === undefined) {
                this._update['$set'].token = 'some token';
                next();
            }
        }); 
    }
    next();
});

我希望这会有帮助。

有关于此问题的更新吗?没有@Maysara我没有找到任何可以解决此问题的方法。我想它可以解决问题,但不是实现解决方案的最佳方法,因为它会在每次更新操作中导致额外的查找查询,这不是最佳做法。无论如何,谢谢你的努力,你是对的。但这是我能想到的在预中间件中实现它的唯一方法。