【问题标题】:IOTHubMessage.forEach is not a function?IOTHubMessage.forEach 不是函数吗?
【发布时间】:2019-08-15 02:09:22
【问题描述】:

谁能告诉我如何解析这个问题?

我有一个抛出的错误消息,当我创建 azure cosmossDB 时,我的 cosmosDB 输出绑定抛出了 IOTHubMessage.forEach 不是函数的消息;

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

    var count = 0;
    var totalTemperature = 0.0;
    var totalHumidity = 0.0;
    var deviceId = "*****";

    IoTHubMessages.forEach(message => {
        context.log(`Processed message: ${message}`);
        count++;
        totalTemperature += message.temperature;
        totalHumidity += message.humidity;
        deviceId = message.deviceId;
    });

    var output = {
        "deviceId": deviceId,
        "measurementsCount": count,
        "averageTemperature": totalTemperature / count,
        "averageHumidity": totalHumidity / count
    };

    context.log('Output content: ${output}');
    context.bindings.outputDocument = output;


    context.done();
};

我错过了什么?请帮忙,谢谢。

【问题讨论】:

    标签: node.js azure azure-cosmosdb azure-iot-hub


    【解决方案1】:

    它未包含在您的答案中,但问题很可能出现在您的 functions.json 文件中。默认情况下,IoTHub 的绑定一次只处理一条消息。这意味着您的 IoTHubMessages 不是一个数组,而是一个对象。您需要将基数从 one 更改为 ma​​ny

    要更改此设置,请编辑您的 functions.json 文件以包含基数属性。

    {
      "type": "eventHubTrigger",
      "name": "eventHubMessages",
      "direction": "in",
      "eventHubName": "MyEventHub",
      "cardinality": "many",
      "connection": "myEventHubReadConnectionAppSetting"
    }
    

    如果您在门户中创建了这个函数,您可以在函数的 Integrate 部分更改绑定的基数:

    【讨论】:

    • 非常感谢Matthijs,现在我知道将来如果我在json文件中遇到函数问题。 Node js 将作为一个单一实体抱怨,这意味着如果我的基数是一个,我可能会经常收到此消息,直到我在 Integrate 选项卡上修改了尽可能多的 Json 函数文件。
    猜你喜欢
    • 2019-08-22
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多