当未处理的Promise拒绝错误时,nodejs继续加载

时间:2017-09-09 16:02:01

标签: javascript node.js

我是nodeJS的新手我试图根据请求选择一个单板Params

router.get('/board/:id', gettingSingleBoard); 

这是获得单板功能

gettingSingleBoard = async function (req, res) {
  const id = req.params.id;
  const board = await Board.findOne({ _id: id });
  res.json(board);
};

当我使用有效ID进行搜索时,它运行良好,但是当我尝试输入未退出控制台日志的ID时," UnhandledPromiseRejectionWarning:未处理的承诺拒绝"它会继续加载而不会返回错误或其他东西

2 个答案:

答案 0 :(得分:4)

您需要使用try / catch包装异步代码。参见示例:

gettingSingleBoard = async function (req, res) {
  const id = req.params.id;
  try {
      const board = await Board.findOne({ _id: id });
      res.json(board); 
  } catch(e) {
      res.status(404).send({type: "NotFoundException"})
  }
};

答案 1 :(得分:0)

另一种可能性是将错误捕获到错误对象:

res.json(
  await Board
          .findOne({ _id: id })
          .catch(e=>({error:500,message:e}))
);