как отправить пакетные данные в концентратор событий из функции azure в узле js? - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь отправить данные в концентратор событий из функции azure, написанной на узле js.Но я получаю следующую ошибку при отправке массива объектов без.

No events found for 'NSEStockInput'.
Start time: Monday, September 23, 2019, 6:56:00 PM
End time: Monday, September 23, 2019, 6:59:00 PM
Last time arrival: Monday, September 23, 2019, 6:59:08 PM
Diagnostics: Source '<unknown_location>' had 1 occurrences of kind 'InputDeserializerError.InvalidData' between processing times '2019-09-23T13:29:10.4592579Z' and '2019-09-23T13:29:10.4592579Z'. Json input stream should either be an array of objects or line separated objects. Found token type: Null

Но когда я выполняю JSON.stringify данных, я получаю ошибку как

Exception: Error: data is required and it must be of type object.

Вот код, который я написал

module.exports = async function (context, myTimer) {
    const {  EventHubClient, EventData, EventPosition, OnMessage, OnError, MessagingError } = require("@azure/event-hubs");
    const connectionString = connectionString
    var axios = require('axios')
    context.log('ssss')
    const client = EventHubClient.createFromConnectionString(connectionString);
    context.log('sssaaa')
    var response = await axios.get('https://nseindia.com/live_market/dynaContent/live_watch/stock_watch/nifty500StockWatch.json')
    await client.send(JSON.stringify(response['data']['data']))

    context.log('message sent')

};

Как решить эту проблему

1 Ответ

0 голосов
/ 24 сентября 2019

Мы можем найти сообщение об ошибке в источнике"eventHubSender".

enter image description here

Таким образом, это сообщение об ошибке означаетвходные данные не являются типом объекта, мы можем искать детали метода "JSON.stringify ()" по этой ссылке и найти возвращаемую строку.И согласно первому сообщению об ошибке, которое вы предоставили

Json input stream should either be an array of objects or line separated objects"

Так что я думаю, что если вы хотите ввести массив объектов, вам нужно изменить код с

await client.send(JSON.stringify(response['data']['data']))

на

await client.send(response['data']['data'])

Обновление:

Вот мой код функции для справки:

module.exports = async function (context, myTimer) {
    const {  EventHubClient, EventData, EventPosition, OnMessage, OnError, MessagingError } = require("@azure/event-hubs");
    const connectionString = "Endpoint=************"
    const eventHubsName = "hurytestentity"
    var axios = require('axios')

    const client = EventHubClient.createFromConnectionString(connectionString, eventHubsName);
    context.log('sssaaa')
    var response = await axios.get('https://nseindia.com/live_market/dynaContent/live_watch/stock_watch/nifty500StockWatch.json')
    await client.send(response['data']['data'])
    context.log('message sent')

};

Код выше работает отлично.

...