繁体   English   中英

为什么findOneAndUpdate运行.then即使返回的对象为null? 猫鼬

Why findOneAndUpdate runs .then even if returned object was null? Mongoose

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

这是我的代码:

User.findOneAndUpdate(
    { confirmationToken: "blablabla" },
    { confirmationToken: "", confirmed: true },
    { new: true }
    )
    .then(user => res.json({ user: user.toAuthJSON() }) )
    .catch(err => res.json({ err }));
)

如果没有任何具有此类ConfirmationToken的用户,则findOneAndUpdate返回null,但是为什么要运行.then而不是.catch? 它不是在返回用户时运行.then,在返回时运行.catch而不是用户对象吗?

2 个回复

返回null是有效的响应。 为了保护您的代码,您可以:

User.findOneAndUpdate(
    { confirmationToken: "blablabla" },
    { confirmationToken: "", confirmed: true },
    { new: true }
    )
    .then(user => res.json({ user: user ? user.toAuthJSON() : user }) )
    .catch(err => res.json({ err }));
)

或者你可以throw你的里面.then ,如果击中美中不足的是你真正想要的。

根据Model.findOneAndUpdate上的猫鼬文档:

查找匹配的文档,根据更新arg对其进行更新,传递任何选项,然后将找到的文档(如果有)返回给回调。

当发生错误时, catch运行,例如:猫鼬验证错误或您想要更新集合中的文档而发生一些错误。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题
 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM