Я работаю со сценарием обработки данных, в котором входящие данные принимаются в концентраторе IoT Azure, обрабатываются с использованием потоковой аналитики Azure и отправляются (триггер http) в функцию Azure: https://github.com/Azure/iotc-device-bridge, записанный в Node.js.Цель здесь - разбить входящие данные и обработать объекты асинхронно.Входящие данные представляют собой массив объектов json.
Я пытался перебрать req.body, чтобы разбить его на разные объекты, но это не сработало.
Спасибо за помощь!
Входящее сообщение для функции:
[{
"device": {
"deviceId": "my-cloud-device"
},
"measurements": {
"temp": 20.31,
"pressure": 50,
"humidity": 8.5,
"ledColor": "blue"
}
},
{
"device": {
"deviceId": "my-cloud-device"
},
"measurements": {
"temp": 20.31,
"pressure": 50,
"humidity": 8.5,
"ledColor": "blue"
}
}]
Код, обрабатывающий входящие данные
const request = require('request-promise-native');
const handleMessage = require('./lib/engine');
const bodyParser = require('body-parser');
const msiEndpoint = process.env.MSI_ENDPOINT;
const msiSecret = process.env.MSI_SECRET;
const parameters = {
idScope: process.env.ID_SCOPE,
primaryKeyUrl: process.env.IOTC_KEY_URL
};
let kvToken;
module.exports = async function (context, req) {
try {
await handleMessage({ ...parameters, log: context.log, getSecret: getKeyVaultSecret }, req.body.device, req.body.measurements, req.body.timestamp);
} catch (e) {
context.log('[ERROR]', e.message);
context.res = {
status: e.statusCode ? e.statusCode : 500,
body: e.message
};
}
console.log(b);
}
Что я ожидаю сделать, так это разбить входящее сообщение на другой объект, который обрабатывается асинхронно с использованием приведенного выше блока кода.
{
"device": {
"deviceId": "my-cloud-device"
},
"measurements": {
"temp": 20.31,
"pressure": 50,
"humidity": 8.5,
"ledColor": "blue"
}
}
{
"device": {
"deviceId": "my-cloud-device"
},
"measurements": {
"temp": 20.31,
"pressure": 50,
"humidity": 8.5,
"ledColor": "blue"
}
}