.isModified在findOneAndUpdate预钩子中不工作?



当用户文档更新时,我试图检查昵称是否更改。isModified功能在save pre hook中正常工作,但在findOneAndUpdate中不工作。

我知道我可以使用this._update,但我需要旧值和新值。

有人能解释一下为什么我不能在这里使用isModified,我怎么才能得到解决方案?

控制器:

const updateProfile = asyncErrorHandler(async (req, res, next) => {
let user = await User.findOneAndUpdate({ uid }, req.body, { new: true })
// Other codes
})

findOneAndUpdate钩:

UserSchema.pre('findOneAndUpdate', function (next) {    
if(this.isModified('nickname')){
// Some codes
}
});

根据官方文档,您不能在findOneAndUpdate pre hook中使用isModified函数。您要么必须在findOneAndUpdate pre hook中执行显式查询,要么将其转换为save pre hook

相关内容

  • 没有找到相关文章

最新更新