IOTHubMessage.forEach 不是函数?
IOTHubMessage.forEach is not a function?
谁能告诉我如何解析这个问题?
我有一个抛出的错误消息,当我创建 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();
};
我错过了什么?请帮忙,谢谢。
它没有包含在您的答案中,但问题很可能在您的 functions.json 文件中。默认情况下,IoTHub 的绑定一次只能处理一条消息。这意味着您的 IoTHubMessages 不是数组,而是单个对象。您需要将基数从 one 更改为 many.
要更改此设置,请编辑您的 functions.json 文件以包含基数 属性。
{
"type": "eventHubTrigger",
"name": "eventHubMessages",
"direction": "in",
"eventHubName": "MyEventHub",
"cardinality": "many",
"connection": "myEventHubReadConnectionAppSetting"
}
如果您在门户中创建此函数,则可以在函数的 Integrate 部分更改绑定的基数:
谁能告诉我如何解析这个问题?
我有一个抛出的错误消息,当我创建 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();
};
我错过了什么?请帮忙,谢谢。
它没有包含在您的答案中,但问题很可能在您的 functions.json 文件中。默认情况下,IoTHub 的绑定一次只能处理一条消息。这意味着您的 IoTHubMessages 不是数组,而是单个对象。您需要将基数从 one 更改为 many.
要更改此设置,请编辑您的 functions.json 文件以包含基数 属性。
{
"type": "eventHubTrigger",
"name": "eventHubMessages",
"direction": "in",
"eventHubName": "MyEventHub",
"cardinality": "many",
"connection": "myEventHubReadConnectionAppSetting"
}
如果您在门户中创建此函数,则可以在函数的 Integrate 部分更改绑定的基数: