我在Azure应用程序中创建了一个由IOT Hub触发的Azure功能,它将收到的消息保存在SQL数据库中。但它收到多条消息时无法处理。我的功能如下。
module.exports = function (context, iotHubMessage) {
for (var i = 0; i < iotHubMessage.length; i++) {
var iotMsgObj = iotHubMessage[i];
context.log('Message : ' + JSON.stringify(iotMsgObj));
context.bindings.paraSession = JSON.stringify(iotMsgObj); //to save data in SQL database
context.done(); // will save first message only
}
// context.done(); // will save last message only
};
当iotHubMessage
集线器有多个JSON对象时,它将保存以太网中的第一个或最后一条消息iotHubMessage
将存储在数据库表中。
请告知我做错了什么?
答案 0 :(得分:0)
我还没有尝试使用SQL绑定,但返回一个数组适用于其他类型(例如队列):
module.exports = function (context, iotHubMessage) {
context.bindings.paraSession = [];
for (var i = 0; i < iotHubMessage.length; i++) {
var iotMsgObj = iotHubMessage[i];
context.bindings.paraSession.push(JSON.stringify(iotMsgObj));
}
context.done();
};
答案 1 :(得分:0)
如果您将数据存储在Azure表存储中,则Mikhail是正确的。但是当您使用SQL数据库时,您需要以下代码片段。
module.exports = function (context, iotHubMessage) {
var tempArr = [];
for (var i = 0; i < iotHubMessage.length; i++) {
var iotMsgObj = iotHubMessage[i];
tempArr.push(iotMsgObj);
}
context.bindings.paraSession = tempArr;
context.done();
};