MongoDB:在mongoDb中查询时何时发生错误

时间:2016-05-17 19:05:52

标签: node.js mongodb

我的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中遇到错误

1 个答案:

答案 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语句并不意味着返回一个值,而是阻止其余的代码运行)