Node.js 猫鼬钩;“保存前/保存后”;不为findOneAndUpdate工作
我正在使用nodejs+express+mongoose 我为一个模块添加了“pre/post save”钩子,它可以很好地使用save功能。 但是当我使用findOneAndUpdate(如果不存在则创建)时,不会调用钩子 看来我唯一能做的就是把findOneAndUpdate分成两个函数,先搜索项目,然后再创建Node.js 猫鼬钩;“保存前/保存后”;不为findOneAndUpdate工作,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我正在使用nodejs+express+mongoose 我为一个模块添加了“pre/post save”钩子,它可以很好地使用save功能。 但是当我使用findOneAndUpdate(如果不存在则创建)时,不会调用钩子 看来我唯一能做的就是把findOneAndUpdate分成两个函数,先搜索项目,然后再创建 有没有更好的办法来解决这个问题?来自mongoose文档: 尽管在使用findAndModify帮助程序时会将值强制转换为相应的类型,但以下内容不适用: 默认值 二传手 验证器 中
有没有更好的办法来解决这个问题?来自mongoose文档: 尽管在使用findAndModify帮助程序时会将值强制转换为相应的类型,但以下内容不适用:
- 默认值
- 二传手
- 验证器
- 中间件
runValidators
选项:
:如果在update()和findOneAndUpdate()调用中创建了新文档,则可以选择运行验证器并设置默认值。为了访问这些功能,在调用update()或findOneAndUpdate()时,必须显式设置runValidators和setDefaultsOnInsert选项。请注意setDefaultsOnInsert选项与MongoDB不兼容我选择了另一种方法。基本上,我所有的逻辑都在预保存中间件中。然后,当我想更新findOneAndUpdate中间件上的值时,我正在保存文档。这再次触发了逻辑。可能对某些人有帮助。{runValidators:true}作为mongoose 4True中的第三个参数可用,但在保存它时,会触发预保存中间件。