Как вывести данные из узла 'request' - PullRequest
0 голосов
/ 26 апреля 2019

Я использую модуль запроса для запроса внутри «экспресс-почтового маршрутизатора» в NodeJS.
Я могу получить значение 'price' внутри запроса.
Но я хочу использовать это вне запроса, например, позицию, в которой находится console.log (цена).
но он говорит, что цена не определена, что находится в console.log
Как я могу вытащить это из запроса для использования другим способом?

exports.clientOrder = async (req, res, next) => {
  try {

    const { clientID, riderID, clientOrder } = req.body;

    await request(
      {
        method: 'POST',
        uri: 'https://api2....',
        body: data,
        headers: {
          'Content-Type': 'application/x-www-form-urlencoded',
        },
      },
      async (error, response) => {
        if (error) {
          return next(error);
        }
        const price = Math.imul(totalDistance / 1000, 2000);

      },
    );

    // I want to get price value here out of request.
    console.log(price) 
    return res.send('order finished well');
  } catch (error) {
    return next(error);
  }
};

1 Ответ

1 голос
/ 26 апреля 2019

await работает только с thenable, вы можете обернуть действие request в Обещание следующим образом:

exports.clientOrder = async (req, res, next) => {
  try {

    const { clientID, riderID, clientOrder } = req.body;

    const price = await new Promise((resolve, reject) => {
      request(
        {
          method: 'POST',
          uri: 'https://api2....',
          body: data,
          headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
          },
        },
        (error, response) => {
          if (error) {
            return reject(error);
          }
          const price = Math.imul(totalDistance / 1000, 2000); // ???
          resolve(price);
        },
      );
    });

    // I want to get price value here out of request.
    console.log(price)
    return res.send('order finished well');
  } catch (error) {
    return next(error);
  }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...