我的findSomething
功能存在错误。
function findSomething(req, res, next) {
Myschema.findXXXById(req.params.xid, function (err, doc) {
if (err) res.json({ status: 1, message: messages.NotFound });
res.json({ status: 0, docsInfo: doc });
});
}
我得到的错误就是这个
错误:发送后无法设置标题 在ServerResponse.OutgoingMessage.setHeader(_http_outgoing.js:335:11)
我理解错误是因为我的 if 条件定义不明确,以便了解错误的来源我希望找到查询可能遇到错误的可能性。
E.g。
if(err) {
// how to get here
}
我尝试从数据库中删除数据,所以现在当它没有获取数据时,它仍然没有给出错误但是返回null。
所以我想知道如何在mongoDb中遇到错误
答案 0 :(得分:2)
您猜对了(在您的评论中):发生错误时,您会发回错误响应,但不会停止其余代码的运行。
您应确保始终只调用一个将发送标头并结束响应的操作;这类操作包括res.json()
,res.send()
,res.render()
和其他一些操作。
您可以像这样重构代码:
if (err) {
res.json({ status: 1, message: messages.NotFound });
} else {
res.json({ status: 0, docsInfo: doc });
}
甚至是这样的事情:
if (err) {
return res.json({ status: 1, message: messages.NotFound });
}
res.json({ status: 0, docsInfo: doc });
(return
语句并不意味着返回一个值,而是阻止其余的代码运行)