【发布时间】:2020-01-04 11:05:30
【问题描述】:
我正在努力寻找处理输出/响应中捕获错误的最佳方法。
我有这条通过 ID 删除游戏的路由
router.delete("/delete/:id", (req, res) => {
(async () => {
try {
let deleteGame = await gameModel.findByIdAndDelete(ObjectId(req.params.id)).exec();
if (deleteGame === null) {
res.json({ error: `No game found with id ${req.params.id}` })
} else {
res.json({ message: `Game ${game.name} deleted` })
}
} catch (error) {
console.log(error)
}
})();
});
例如,当 ID 采用意外格式时,mongoose 将返回
Argument passed in must be a single String of 12 bytes or a string of 24 hex characters在“赶上”
我不确定在 catch 中执行 res.json({ message: 'An error occured' }) 是否是一个好习惯 - 这不是让服务器记录等吗?
【问题讨论】:
-
什么是 f.x.代表什么?
-
我猜是“例如”,但最好写出来...
-
你能告诉我你传递的是什么身份吗@morten-hagh
-
@RajuSingh - 我正在发送一个可能如下所示的 objectID:“5e0f8c3193a21e3ee06ed32f”它是创建文档时提供给文档的 ID。
-
如果可能的话,您能否将您的 gameModel.Sending 错误消息显示为 json 是不够的。它也应该有状态码。例如:成功删除它应该是 204,对于无效或不存在的 id 404 否则 500。你能把聊天框中的错误日志发给我吗? @MortenHagh
标签: javascript node.js mongoose try-catch