reactjs - 为什么 findOneAndUpdate 运行 .then 即使返回的对象为空?猫鼬
问题描述
这是我的代码:
User.findOneAndUpdate(
{ confirmationToken: "blablabla" },
{ confirmationToken: "", confirmed: true },
{ new: true }
)
.then(user => res.json({ user: user.toAuthJSON() }) )
.catch(err => res.json({ err }));
)
当没有任何用户拥有这样的确认令牌时,findOneAndUpdate 返回 null 但为什么它运行 .then 而不是 .catch?当返回用户时运行 .then 并在返回时运行 .catch 是 NULL 而不是用户对象?
解决方案
返回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上的猫鼬文档:
找到匹配的文档,根据更新参数更新它,传递任何选项,并将找到的文档(如果有)返回给回调。
推荐阅读
- python - 使用 pandas 元素作为字典中的键
- github-actions - 如何在 Github Actions 步骤中强制退出
- python - 尝试使用 python 将列表组合成二十一点游戏中玩家的子列表
- javascript - 如何为对象随机分配特定颜色?
- php - 如何在 Laravel 查询生成器的 Where 子句中使用数组?
- python-3.x - 如何使用带有列表变量的 pytest 参数化装饰器
- javascript - 如何在 Vue.js 中获取计算数组的长度
- c - C添加到结构指针数组在函数中不起作用
- tensorflow - 如何在 Keras 中使用“有状态”变量/张量创建自定义层?
- python - 使用 Python 探索和发现数据中的模式/相似性