簡體   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