Экспресс-асинхронный возврат возвращается - PullRequest
0 голосов
/ 13 декабря 2018

Привет. Я пытаюсь использовать асинхронную функцию для возврата ответа при входе в систему.

Проблема в том, что 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 голосов
/ 13 декабря 2018

Вы должны использовать запрос-обещание.Async-await работает только с обещаниями, поэтому сначала нужно преобразовать библиотеку запросов в обещанную форму.Используйте модуль npm ниже для обещанной версии библиотеки запросов.

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

...