[英]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.