Node.js IoTubMessage.forEach不是函数吗?
谁能告诉我如何解析这个问题 我有一个抛出的错误消息,当我创建azure cosmossDB时,我的cosmosDB输出绑定抛出的消息IOTHubMessage.forEach不是一个函数Node.js IoTubMessage.forEach不是函数吗?,node.js,azure,azure-cosmosdb,azure-iot-hub,Node.js,Azure,Azure Cosmosdb,Azure Iot Hub,谁能告诉我如何解析这个问题 我有一个抛出的错误消息,当我创建azure cosmossDB时,我的cosmosDB输出绑定抛出的消息IOTHubMessage.forEach不是一个函数 module.exports = function (context, IoTHubMessages) { context.log(`JavaScript eventhub trigger function called for message array: ${IoTHubMessages}`);
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的绑定默认情况下一次只处理一条消息。这意味着消息不是数组,而是单个对象。您需要将基数从one更改为many 要更改此设置,请编辑functions.json文件以包含基数属性
{
"type": "eventHubTrigger",
"name": "eventHubMessages",
"direction": "in",
"eventHubName": "MyEventHub",
"cardinality": "many",
"connection": "myEventHubReadConnectionAppSetting"
}
如果在门户中创建了此函数,则可以在函数的集成部分更改绑定的基数:
非常感谢Matthijs,现在我知道将来如果遇到json文件的函数问题。Node js将作为单个实体进行投诉,这意味着如果我的基数是一个,我可能会经常收到此消息,直到我在Integrate选项卡上修改了Json函数文件中的许多内容。