繁体   English   中英

猫鼬前钩findOneAndUpdate修改从另一个集合获取的某些字段

[英]mongoose pre hook findOneAndUpdate modify some field getting from another collection

我正在尝试在findOneAndUpdate预钩子中修改文档,代码如下

userSchema.pre('findOneAndUpdate', function (next) {
// this._update.$set
//var user = new User(this._update.$set)

var promiseArray = []  
promiseArray.push(// Fetching some data from other collection)

Promise.all(promiseArray).then(function (values) {

if (values[0].length === 0) {

  return next('Data not found')
} else {                    
    this._update.$set.salary = values.salary          
    return next()
}
}).catch(function (err) {    
next(err)
})

})

我出错了

TypeError: Cannot read property '$set' of undefined

我知道为什么会收到此错误,因为我正在promise中访问“ this”关键字,pre方法后“ promise”中的“ this”不同于“ this”如何解决此问题,我尝试通过分配将this._update。$ set设置为不同的值,并在注释代码中显示示例,但保存后不修改文档,我们只需更改this._update。$ set.salaray值。 任何帮助表示赞赏

您可以使用.bind()

 Promise.all(promiseArray).then(function (values) { if (values[0].length === 0) { return next('Data not found') } else { this._update.$set.salary = values.salary return next() } }.bind(this)).catch(function (err) { next(err) }) }) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM