在快递js路由中调用异步函数的正确方法

时间:2018-02-05 01:32:19

标签: node.js express

这就是我现在的表现。但试着看看是否有正确或另一种方式来做到这一点。

async function getmanual_vars(req, res,ajax){
    var return_data = {};
    let db = await mongo_client.connect(mongo_url);

    let db_data = await db.collection('data').find({ created_by_user_id: req.cookies.user_id}).toArray();

    // more codes inside //

    res.json({ success: true});
}

router.post('/manual_vars', check_auth,function(req, res, next) {
    getmanual_vars(req, res,0);
});

1 个答案:

答案 0 :(得分:1)

您可以这样做:

async function getmanual_vars(req, res) {
  try {
    var return_data = {};
    let db = await mongo_client.connect(mongo_url);

    let db_data = await db.collection('data').find({
      created_by_user_id: req.cookies.user_id
    }).toArray();

    // more codes inside //

    res.json({ success: true});
  } catch (error) {
    res.status(500).json({ success: false, error: error });
  }
}

router.post('/manual_vars', check_auth, getmanual_vars);

这应该抓住状态为500的异步函数中可能出现的错误和异常。

由于这已经是接受reqres的函数,因此我们可以将函数本身传递给路由器,而不必在其周围创建包装器。