gpt4 book ai didi

node.js - 如何访问预更新 Mongoose 中间件中的文档对象?

转载 作者:可可西里 更新时间:2023-11-01 09:54:18 24 4
gpt4 key购买 nike

考虑一下,我有一个像这样的 Mongoose 模式

const mySchema = new mongoose.schema({
val1:Number,
val2:Number
val_1_isBigger:Boolean})

现在我想在每次更新操作之前比较 val1 和 val2,因此我想为 val_1_isBigger 设置 bool 属性。

我的问题是如何在 pre('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();
});

希望对你有帮助。

关于node.js - 如何访问预更新 Mongoose 中间件中的文档对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43803189/

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