繁体   English   中英

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

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

提示:本站提供中英文对照查看,鼠标放在中文字句上可显示英文原文。 若本文未解决您的问题,推荐您尝试使用帮您解决。

这是我的代码:

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而不是用户对象吗?

返回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-2023 STACKOOM.COM