Вопрос или проблема
У меня есть логическое приложение, в котором я использую условное выражение для двух переменных, displayName
и accountName
.
Иногда переменная может не существовать, что вызовет такую ошибку:
InvalidTemplate
Невозможно обработать выражения языка шаблона для действия 'Condition' на строке '0' и столбце '0': 'Функция языка шаблона 'contains' ожидает, что её первый аргумент 'collection' будет словарём (объектом), массивом или строкой. Предоставленное значение имеет тип 'Null'.'.
Как мне обработать эту ошибку? Я хочу, чтобы условие считало нулевое значение как пустую строку.
Можно ли записать выражение, которое будет выглядеть как iff(accountName
пуст(), ”, accountname
)?
Вы можете сделать это, используя функцию coalesce().
Я использую приведенные ниже выражения для достижения этой цели.
coalesce(variables('accountName'),'')
coalesce(variables('displayName'),'')
Это сработает, если одна из переменных не существует. Здесь я передаю только значение имени учетной записи, но не отображаемого имени.
Другой метод заключается в использовании выражения if:
if(equals(item()?['accountName'], null),'',item()?['accountName'])
Ответ или решение
Как обрабатывать значения null в условиях Logic App
При разработке логики обработки данных в Azure Logic Apps одной из распространённых проблем является наличие переменных со значением null. Например, если ваши переменные displayName
и accountName
не существуют или не инициализированы, вы можете столкнуться с ошибками при выполнении шаблонов, связанными с использованием функции contains
. Ошибка может выглядеть следующим образом:
InvalidTemplate
Unable to process template language expressions for action 'Condition' at line '0' and column '0': 'The template language function 'contains' expects its first argument 'collection' to be a dictionary (object), an array or a string. The provided value is of type 'Null'.
Решение проблемы с использованием функции coalesce()
Одним из способов обработки значений null и приведения их к пустой строке является использование функции coalesce()
. Эта функция позволяет возвращать первое ненулевое значение из перечисленных аргументов. Пример её использования:
coalesce(variables('accountName'),'')
coalesce(variables('displayName'),'')
Таким образом, если accountName
или displayName
равны null, то в вашем условии будет использоваться пустая строка вместо null. Это поможет избежать ошибок и обеспечит корректное выполнение логики приложения.
Альтернативный метод — условное выражение if
Другой подход к обработке значений null включает использование конструкции if. Это позволяет вам явно определять, что делать, когда значение равно null:
if(equals(item()?['accountName'], null), '', item()?['accountName'])
В этом случае, если accountName
оказывается равным null, функция возвращает пустую строку, а если значение присутствует, возвращается само значение переменной.
Применение в условиях
Важно учесть, как эти функции могут быть применены в ваших условиях Logic App:
-
Первый вариант с coalesce: Поместите выражения
coalesce
непосредственно в условиях, которые вы используете. Это необходимо для того, чтобы убедиться, что значения, передаваемые в условия, не равны null. -
Второй вариант с if: Используя конструкцию if, вы можете формировать более сложные условия. Это позволяет динамически обрабатывать и заменять значения на пустые строки, что улучшает читабельность кода и поддерживает более чистую логику.
Заключение
Эти методы помогут вам избежать ошибок, связанных с переменными со значением null в наборе условий ваших Logic Apps. Используя функции coalesce
и if
, вы можете обеспечить стабильность работы вашего приложения и корректный способ обработки данных. Правильное управление значениями, особенно в условной логике, позволяет минимизировать возможные ошибки и повысить эффективность логики обработки.
Всё это подчеркивает важность надежного проектирования и тестирования логики ваших приложений. Надеюсь, данная информация была вам полезной!