我正试图在猫鼬的findOneAndUpdate函数中添加一个后中间件钩子。根据文档,此函数触发以下中间件挂钩(docs)
schema.post('findOneAndUpdate', ...)
现在,猫鼬findOneAndUpdate()
的默认行为是返回原始,未更改的文档。 (mongoose docs)。为了获取新,更新文档,需要将{new:true}
传递给findOneAndUpdate
函数。
不幸的是,传递{new:true}
也会改变发布挂钩的行为。如果为new : true
,则会为新文档触发挂钩(更新之后)。如果为new : false
,则为旧文档触发挂钩(更新之前)。
我的钩子需要为新文档运行。不管传递的new
的值如何,有没有办法始终获取更新的文档?这是我的代码(TypeScript):
schema.post('findOneAndUpdate', async function (this : Query<any>, doc : any) {
console.log(doc); // value depends on the way the function is invoked
// If {new:true} = hook is triggered with updated doc
// If {new:false} = hook is triggered with old doc
// How can I always get the new, updated doc here?
// Regardless of the value of new
});