Вирази

Кожне поле вузла читається одним із трьох способів, і від цього залежить, як писати значення. Це найчастіше джерело зламаних флоу, тож варто розібратися один раз.

Три види полів

Вид поляЯк читаєтьсяПриклад значення
текстяк є, без обчисленьorders
JSONataусе поле — це один виразinput.body.title
гібридє {{…}} — текст із підстановками; немає — цілий вираз JSONatahttps://api.x/orders/{{input.body.id}}

Пастка гібридних полів: якщо в значенні немає жодного {{, воно читається як вираз. Тому стала адреса мусить бути в лапках:

"https://api.example.com/orders"

Без лапок JSONata спробує знайти шлях https: і поверне порожньо.

Звідки беруться дані

  • input — це вихід попереднього вузла, не дані запиту.
  • outputs.<id вузла> — вихід будь-якого вузла, який виконався раніше.
  • variables.<ключ> — змінна флоу.
{{ outputs.incoming.body.title }}
{{ outputs.save_order.first.id }}

Якщо в ідентифікаторі вузла є дефіс (а редактор колись такі й створював), його треба брати в лапки, бо в JSONata дефіс — це мінус:

outputs."node-1760459115475".items
{{ outputs.'node-7'.text }}

Працюють обидва види лапок. Без них вираз читається як відняття й тихо дає порожнє. Для нових вузлів ідентифікатори вже з підкресленнями, тож лапки їм не потрібні.

Читати можна лише ті вузли, які стоять вище по гілці. Вузол із паралельної гілки або з тієї, що виконається пізніше, дасть порожнє значення.

Дані тригера

Одразу після тригера input — це і є його вихід, тож input.body.title працює. Але на другому вузлі після тригера input — це вже вихід середнього вузла. Тому дані запиту завжди надійніше брати за іменем тригера:

{{ outputs.incoming.body.title }}

Пастки JSONata

  • $now() приймає формат, а не назву часової зони. $now('Europe/Kyiv') повернe рядок «Europe/Kyiv». Для зони є другий аргумент: $now('[H01]:[m01]', '+0200').
  • Порожній результат — не помилка. Якщо шлях не знайдено, вираз дає undefined, а не падіння, тож флоу піде далі з порожнім значенням.
  • У полі, де вже є {{…}}, решта тексту лишається текстом — обчислюється тільько те, що в подвійних дужках.