Конструктор приложений логики удаляет цикл foreach без ошибок или исключений

У меня есть приложение логики, которое использует триггер веб-перехватчика в очереди сообщений служебной шины для отправки выбранных сообщений в приложение API с помощью действия HTTP + Swagger.

Конструктор приложений логики Azure

Вот массив json (DBChanges) из triggerBody, который должен выполнять цикл foreach

"DBChanges":[{"Key":"ItemID","Value":"101"},{"Key":"Description","Value":"Decript the message"},{"Key":"Owner","Value":"Samuel"}]

Это код приложения логики для сообщения DBChanges POST. Цикл foreach должен перебирать все элементы массива DBChanges, который является парой ключ-значение в метаданных swagger.

Просмотр кода приложения логики Azure

Когда я переключаюсь в режим разработки после добавления цикла foreach, дизайнер удаляет код foreach, даже если он кажется синтаксически правильным.

Кто-нибудь знает, почему разработчик приложения логики удаляет foreach при переключении между представлениями Design и Code?


person Clive Newcomb    schedule 30.01.2017    source источник


Ответы (1)


Попробуйте обновить свое состояние до "expression": "@equals(triggerBody()['Description'], 'Create')",.

Внутри условия вы хотите иметь сначала для каждого, а затем HTTP-действие внутри него, а не наоборот (я использую Compose в качестве примера, но вы можете заменить его на HTTP + Swagger в вашем случае), обратите внимание, как я использую @item () для ссылки на каждое значение внутри массива DBChanges.

"actions": {
    "For_each": {
        "actions": {
            "Compose": {
                "inputs": "@item()",
                "runAfter": {},
                "type": "Compose"
            }
        },
        "foreach": "@triggerBody()['DBChanges']",
        "runAfter": {},
        "type": "Foreach"
    }
}

Чтобы помочь вам ссылаться на правильное значение в большом двоичном объекте JSON, мы недавно добавили действие Анализировать JSON, вы можете добавить его после триггера HTTP Webhook, предоставить тело в качестве входных данных и включить схему JSON в него. вернется. Вы сможете использовать дружественные жетоны из сборщика вместо того, чтобы создавать их вручную. :)

Надеюсь, это поможет, не стесняйтесь обращаться ко мне на Derek.Li (at) Microsoft dot com.

person Derek Li    schedule 31.01.2017
comment
Код помог мне разгадать загадку того, как заставить foreach правильно работать в моем HTTP-действии. После реализации я понял, что проделал много работы, чтобы вручную восстановить входные данные предыдущего шага, когда все, что мне действительно нужно было сделать, это назначить выходные данные предыдущего шага входным данным следующего шага: body: @json (triggerBody () ['ContentData']). - person Clive Newcomb; 07.02.2017
comment
Один дополнительный комментарий: по-прежнему необходимо использовать функцию @json при оценке выражения, иначе синтаксический анализатор выдаст ошибку, правильно указав, что ввод - это json и должен обрабатываться как таковой. - person Clive Newcomb; 07.02.2017