Javascript mongoose预钩子findOneAndUpdate修改从另一个集合获取的某些字段

Javascript mongoose预钩子findOneAndUpdate修改从另一个集合获取的某些字段,javascript,node.js,mongodb,mongoose,promise,Javascript,Node.js,Mongodb,Mongoose,Promise,我正在尝试修改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.

我正在尝试修改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”关键字,“this”与pre方法后的“this”不同 如何解决这个问题,我试着通过分配任务来解决这个问题 此._update.$设置为注释代码中显示的不同值,但保存后并没有修改文档,我们只需更改此._update.$set.salaray值。您可以使用
.bind()

Promise.all(promiseArray).then(函数(值){
if(值[0]。长度===0){
返回下一步('未找到数据')
}否则{
此._更新.$set.salary=values.salary
返回下一个()
}
}.bind(this)).catch(函数(err){
下一个(错误)
})
})