Как сделать HTTP-пост-запрос (NodeJS) на основе обещаний из функции Azure? - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть сценарий, когда концентратор событий получает данные, и функция Azure запускается для извлечения данных, а функция Azure должна сделать запрос POST с этими извлеченными данными в качестве полезной нагрузки и получить ответ от сервера. Я использую HMPP модуль Axios, основанный на обещаниях, так как время отклика может варьироваться в зависимости от полезной нагрузки. (Функции Azure находятся в NodeJS); Проблема в том, что запросы на отправку сообщений не проходят

Пробовал асинхронно - ждать вызова для запроса Post, все еще не работает.

вот код

module.exports = async function (context, eventHubMessages) {
    context.log(`JavaScript eventhub trigger function called for message array ${eventHubMessages}`);

    var data = {};

    eventHubMessages.forEach((message, index) => {
        context.log(`Processed message ${message}`);
        data = message;
    });

    const axios = require('axios');
    module.exports=async function(context,req){

      let response=  await axios.post('http:example.com/post',     
        { 
          data 
        } 
        )
        .then((res) => {
        context.log(`statusCode: ${res.statusCode}`)
        context.log(res)
        })
        .catch((error) => {
        context.error(error)
        })

        context.log(`Output content: ${res}`);

        }
};

Вот функция. Json

{
  "bindings": [
    {
      "type": "eventHubTrigger",
      "name": "eventHubMessages",
      "direction": "in",
      "eventHubName": "name-eventhub",
      "connection": "eventhub-key",
      "cardinality": "many",
      "consumerGroup": "$Default"
    },
    {
      "type": "http",
      "name": "$return",
      "direction": "out"
    }
   ]
}

Ожидаемый результат:

Processed message [object]
statusCode : 200
Output content: response // print response in here

Фактическая выработка:

Processed message [object]

На выходе не отображается код состояния или ответ.

1 Ответ

0 голосов
/ 25 апреля 2019

Если вы await обещаете, вам не нужно связывать then и catch

const axios = require('axios');
module.exports=async function(context,req){
  try {
    const response =  await axios.post('http:example.com/post', {data})
    context.log(`statusCode: ${response.statusCode}`);
    context.log(response);
    return response; // or return a custom object using properties from response
  } catch (error) {
    // If the promise rejects, an error will be thrown and caught here
    context.error(error);
  }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...