Функции Azure IoTHub Cosmos DB (js) - PullRequest
0 голосов
/ 23 мая 2018

Я отправляю данные в Azure IoTHub.Затем эти данные извлекаются и обрабатываются функцией IoTHub EventHub.

Эта функция извлекает данные и вставляет эти данные в базу данных Azure Cosmos.

В функции IoTHub EventHub вы должны объявитьБаза данных Cosmos и коллекция Cosmos перед запуском функции.

Проблема в том, что я хочу использовать динамическое имя коллекции.Это имя зависит от данных, которые отправляются на IoTHub.Это возможно?Могу ли я объявить имя коллекции, когда функция запущена?

С помощью приведенных ниже сценариев можно отправить одну коллекцию

function.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(); 

};

Summery:

Я хочу использовать переменную collectionName, которая будет объявлена ​​в index.js?

Как объявить collectionName вde function.json и можно ли объявить эту переменную в de index.js?

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Когда я регистрирую context.bindData:

(context.log(`Bindingdata = ${JSON.stringify(context.bindingData)}`))

, я получаю следующее:

{
    "partitionContext": {
        "eventHubPath": "tdppoc1iothub",
        "consumerGroupName": "functions"
    },
    "partitionKeyArray": [
        null,
        null
    ],
    "offsetArray": [
        "17206545352",
        "17206546560"
    ],
    "sequenceNumberArray": [
        296710,
        296711
    ],
    "enqueuedTimeUtcArray": [
        "2018-05-23T11:28:59.271Z",
        "2018-05-23T11:29:01.317Z"
    ],
    "propertiesArray": [
        {},
        {}
    ],
    "systemPropertiesArray": [
        {
            "iothub-connection-device-id": "tdppoc1device1",
            "iothub-connection-auth-method": "{\"scope\":\"device\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}",
            "iothub-connection-auth-generation-id": "********",
            "iothub-enqueuedtime": "2018-05-23T11:28:59.015Z",
            "iothub-message-source": "Telemetry",
            "x-opt-sequence-number": 296710,
            "x-opt-offset": "17206545352",
            "x-opt-enqueued-time": "2018-05-23T11:28:59.271Z",
            "enqueuedTimeUtc": "2018-05-23T11:28:59.271Z",
            "sequenceNumber": 296710,
            "offset": "17206545352"
        },
        {
            "iothub-connection-device-id": "tdppoc1device1",
            "iothub-connection-auth-method": "{\"scope\":\"device\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}",
            "iothub-connection-auth-generation-id": "********",
            "iothub-enqueuedtime": "2018-05-23T11:29:01.015Z",
            "iothub-message-source": "Telemetry",
            "x-opt-sequence-number": 296711,
            "x-opt-offset": "17206546560",
            "x-opt-enqueued-time": "2018-05-23T11:29:01.317Z",
            "enqueuedTimeUtc": "2018-05-23T11:29:01.317Z",
            "sequenceNumber": 296711,
            "offset": "17206546560"
        }
    ],
    "sys": {
        "methodName": "IoTHubJS_EventHubPOC",
        "utcNow": "2018-05-23T11:29:01.610Z"
    },
    "invocationId": "ea783bf0-3354-4bb9-bba5-e4273760c14a"
}
0 голосов
/ 23 мая 2018

Вы можете сделать это с помощью функции Azure C # / F #, используя класс Binder (см. в этом примере ), но сценарий пока не поддерживается для языков, отличных от .NET.

Для отслеживания функций Node.js есть элемент отслеживания , но он очень старый, и прогресса по нему не было.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...