我有预钩来填充设置为schema.pre(/^find/, fn)
的必填字段。现在,我正在尝试使用相同类型的系统来使用document.save()
函数,但遗憾的是,它既不适用于schema.pre('save')
也不适用于schema.post('save')
因此,这将完全填充字段:
let user = await User.findOneAndUpdate({_id: user._id}, {$set: {testFieldWithRef: someObjectId}}, {new: true});
console.log(user.testFieldWithRef) //would output populated field instead of objectId
不会用我的.pre
钩子填充字段
let user = await User.findOne({_id: user._id})
user.testFieldWithRef = someObjectId
user.markModified('testFieldWithRef')
user = await user.save()
console.log(user.testFieldWithRef) //would output someObjectId
答案 0 :(得分:0)
所以,这奏效了。不幸的是,猫鼬在stackoverflow上并不流行
schema.pre('save', async function(next) {
await this.populate({
path: 'testFieldWithRef'
}).execPopulate();
next()
})