使用async / q / promises进行错误处理

时间:2016-07-03 11:01:48

标签: javascript node.js mongodb asynchronous

我是使用node.js的新手,现在我正在研究一个查询mongodb的API。

以下函数apiRequest需要调用两个函数,每个函数执行一个单独的db查询。当前函数的问题是如果其中一个查询有某种错误,我就无法捕获它。

实现此功能的最佳方法是什么,以便处理正确的错误。有人把我指向异步库,并提到我必须对promises做些什么,但我真的无法弄明白。理想情况下,我不想更改dbQueryOne和dbQueryTwo的定义,因为它们也在其他地方使用。

exports.apiRequest =function(req,res) {
  dbQueryOne(req.body.inputA);
  dbQueryTwo(req.body.inputA);
  res.send('Moved For Further Action',200);
}

1 个答案:

答案 0 :(得分:0)

exports.apiRequest = function(req,res) {
  dbFuncs = [dbQueryOne(req.body.inputA), dbQueryTwo(req.body.inputA)];
  Promise.all(dbFuncs)
  .then(result => { 
    res.send('Moved For Further Action',200);
  })
  .catch(err =>{
    //catch err
  });
}

您可以使用promise.all运行多个查询并捕获catch块中发生的任何错误