我向 Azure IoTHub 发送数据。然后由 IoTHub EventHub 函数检索和处理此数据。
此函数检索数据并将此数据插入 Azure Cosmos DB。
在 IoTHub EventHub 函数中,您必须先声明 Cosmos 数据库和 Cosmos 集合,然后才能运行该函数。
问题是我想使用动态集合名称。此名称取决于发送到 IoTHub 的数据。这可能吗?我可以在函数运行时声明集合名称吗?
使用下面的脚本可以发送到一个集合
函数.json:
{
"bindings": [
{
"type": "eventHubTrigger",
"name": "IoTHubMessages",
"direction": "in",
"path": "poc_funceventhubname",
"connection": "POCIoTHub_events_IOTHUB",
"cardinality": "many",
"consumerGroup": "functions"
},
{
"type": "documentDB",
"name": "outputDocument",
"databaseName": "VALUES",
"collectionName": "POCVALUES",
"createIfNotExists": true,
"connection": "pocCosmos_DOCUMENTDB",
"direction": "out"
}
],
"disabled": false
}
index.js:
module.exports = function (context, IoTHubMessages) {
var v;
var output = [];
IoTHubMessages.forEach(message => {
v = message.v;
context.log(`v = ${v}`);
for(var i = 0; i < message.REGS.length; i++) {
var obj = message.REGS[i];
output[i] = {
"vi": v,
"pi": obj[0],
"ts": obj[2],
"vl": obj[1]
};
context.bindings.outputDocument = output;
}
});
context.done();
};
总结:
我想使用一个变量 collectionName,它将在 index.js 中声明?
如何在 de function.json 中声明 collectionName,我可以在 de index.js 中声明这个变量吗?