Как получить доступ к данным в документе БД Cosmos при использовании триггера функции в ленте изменений - PullRequest
0 голосов
/ 27 сентября 2018

Я использую триггер V1 космической БД с функцией Azure, чтобы попытаться проанализировать документ, выполнить какое-то действие, основанное на некоторых значениях, но я по каким-то причинам пытаюсь прочитать свойства из документа.Я читаю эту страницу, чтобы попытаться понять ее, но не могу заставить ее работать должным образом.

Документация для функции триггера

Я создал этот пример класса, и он получил удар иполучает фид изменений просто отлично, но я не попадаю внутрь условия if, так как не правильно читаю свойство и не вижу, как глубже проникнуть в JSON, используя этот метод

 public static class Function1
    {
        [FunctionName("Function1")]
        public static void Run([CosmosDBTrigger(
            databaseName: "XXX",
            collectionName: "XXX",
            ConnectionStringSetting = "CosmosDb",
            LeaseCollectionName = "leases", LeaseCollectionPrefix = "local")]IReadOnlyList<Document> documents, TraceWriter log)
        {
            if (documents != null && documents.Count > 0)
            {
                log.Info("Documents modified " + documents.Count);
                log.Info("First document Id " + documents[0].Id);

                foreach(var document in documents)
                {
                    if(document.GetPropertyValue<string>("sourceSystem") == "YYYY")
                    {
                        log.Info("sourceSystem = YYYY");
                    }
                }

            }
        }
    }

Как читатьданные из документа, когда он вложен глубоко в массив JSON?Я немного растерялся из-за getPropertyValue, в отличие от анализа JSON с использованием linq или аналогичного. Как я могу получить свои значения из документа?

1 Ответ

0 голосов
/ 27 сентября 2018

JSON-файлы анализируются в Document Object, который обеспечивает метод GetPropertyValue<T>(string propertyName).Мы можем использовать этот метод для поиска первого уровня файла JSON.Чтобы углубиться, нам нужно соответствующим образом проанализировать свойство JSON.

Например, чтобы прочитать этот файл.

{
    "id": "test1",
    "myJarray": [
        {
            "mydata1": "testout",
            "mydata2": "testout"
        }
    ]
}

Получить внутри, используя JArray.

foreach (var document in documents)
{
    var array = document.GetPropertyValue<JArray>("myJarray");
    if (array != null)
    {
        var data = ((JObject)array[0]).GetValue("mydata1");
        if (data != null)
        {
            log.Info(data.ToString());
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...