表达异步错误返回

时间:2018-12-13 08:53:43

标签: node.js express promise

嗨,我正在尝试使用异步功能从登录返回响应

问题在于res.json在包含reponse之前被返回

const routes = require('express').Router();
const request = require('request');
const bodyParser = require("body-parser");
routes.use(bodyParser.json());
routes.use(
  bodyParser.urlencoded({
    extended: true
  })
);


routes.post('/login', async function (req, res) {

  let options = {
    form: {
      username: req.body.username,
      password: req.body.password
    }
  };

  var data = await request.post(
    req.url,
    options,
    await function (error, response, body) {
      if (error) {
        console.log(error);
      }

      // The data I want 
      return response;
    }
  )

  //This returns before it includes response
  res.json(data);

});

module.exports = routes;

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您应该使用请求承诺。异步等待仅与promise一起使用,因此您必须首先将请求库转换为承诺形式。在npm模块下面使用请求版本的请求库。

https://www.npmjs.com/package/request-promise