Канал изменения функции Azure из CosmosDB JavaScript - PullRequest
0 голосов
/ 15 октября 2019

Я бы хотел добиться следующего сценария в Azure.

Имитированное устройство IoT отправляет некоторые сообщения в концентратор IoT, и я сохраняю их в CosmosDB. Пока эта штука работает. Для этого я использовал функцию Azure.

Следующим шагом является создание новой функции Azure с триггером подачи изменений из CosmosDB и передача ее в концентратор событий Azure.

Я создал на портале соответствующий function.json

{
  "bindings": [
    {
      "type": "eventHub",
      "name": "outputEventHubMessage",
      "connection": "dev-euwest_all_EVENTHUB",
      "eventHubName": "forwardedmessages",
      "direction": "out"
    },
    {
      "type": "cosmosDBTrigger",
      "name": "inputDocuments",
      "connectionStringSetting": "cdb-euwest_DOCUMENTDB",
      "databaseName": "iot",
      "collectionName": "messages",
      "leaseCollectionName": "forwardedmessages",
      "createLeaseCollectionIfNotExists": true,
      "direction": "in"
    }
  ],
  "disabled": false
}

Тогда у меня есть index.js

module.exports = async function (context, documents) {
    if (!!documents && documents.length > 0) {
        context.log('Document Id: ', documents[0].id);
    }
}

Когда я запускаю его, нет ошибки, но я несм. любой идентификатор документа.

Это мой пример исходного сообщения с использованием устройства Azure IoT Python Azure Python Simulator

{
    "_id" : ObjectId("5da47cd2b19c571e106a040c"),
    "temperature" : 34.78470937343868,
    "humidity" : 79.96610016503291
}

Что я здесь не так делаю? Как правильно подобрать сообщения?

Ответы [ 2 ]

0 голосов
/ 15 октября 2019

Образец документа является документом Bson. Это означает, что вы используете учетную запись Cosmos DB с Mongo API.

Если это так, проверьте официальную документацию , в которой говорится:

В настоящее время триггер функций Azure для Cosmos DB поддерживается для использования только с Core (SQL) API.

Кроме того, в Документация по привязке функций Azure указано:

Привязки Azure Cosmos DB поддерживаются только для использования с SQL API. Для всех других API-интерфейсов Azure Cosmos DB вы должны обращаться к базе данных из своей функции, используя статический клиент для вашего API, включая API Azure Cosmos DB для MongoDB, API Cassandra, Gremlin API и Table API.

В настоящее время Trigger не поддерживает Mongo.

0 голосов
/ 15 октября 2019

Функция изменения CosmosDB проверяет, только если документ был обновлен, и инициирует вызов.

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