[英]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.