如何在Azure Function JavaScript中保存多条消息?

时间:2017-07-25 13:42:07

标签: javascript json azure azure-functions

我在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将存储在数据库表中。

请告知我做错了什么?

2 个答案:

答案 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();
};