在 findById 方法中处理 404 状态
Posted
技术标签:
【中文标题】在 findById 方法中处理 404 状态【英文标题】:handling 404 status in findById method 【发布时间】:2019-01-24 20:29:17 【问题描述】:我正在 node.js (express.js + mongoose) 上创建 RESTful API。 我有 _id 和 title 的猫鼬模型。
当我处理 GET 请求以通过 _id 查找特定对象时,我使用 findById 方法,我想知道如果请求的 id 错误如何处理。换句话说,问题是“findById 方法的 404 状态如何处理”。
我尝试过类似的方法,但没有成功:
Blog.findById(id)
.select("_id title")
.exec()
.then(result =>
if (result)
res.status(200).json(
article: result
);
else
res.status(404).json(
message: 'Article was not found'
);
)
.catch(err =>
console.log(err);
res.status(500).json(
error: err
);
);
【问题讨论】:
错误是什么?另外,您的第一个.then
中的 result
是什么?
【参考方案1】:
当没有对象符合条件时,猫鼬中的Model.findById
将返回 null,因此您只需在所有代码之前将 if 子句放在 .then()
内
.then(result =>
if(!result) return res.status(404).send('No result found');
// rest of your code here
这将向客户端发送 404。
【讨论】:
以上是关于在 findById 方法中处理 404 状态的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 try 和 catch 处理 axios 中的 404 错误
如何在 Spring Boot @ResponseBody 中返回 404 响应状态 - 方法返回类型是响应?
如何用实际的 404 状态代码响应替换 Blazor 默认“软 404”