如何在发布findOneAndUpdate中间件挂钩中获取猫鼬的更新对象(new = true)?

时间:2019-01-28 10:53:29

标签: node.js mongodb mongoose

我正试图在猫鼬的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
});

0 个答案:

没有答案