Сайт

Expressions

Поле может хранить литерал — число, строку, дату — или выражение, которое указывает на то, что отдаёт другая node. Переключатель {} рядом с бейджем типа переключает одно на другое.

{{Fetch Orders.summary.revenue.amount}}

Переключение ничего не теряет: литерал и выражение лежат в разных слотах одного поля. Выключили выражение — вернулось то, что вы вводили до него.

Как ведёт себя поле

В режиме выражения всё поле — один путь: Fetch Orders.summary.count. Скобки набирать не нужно вовсе — поле уже является выражением, а список открывается по фокусу. Скобки в {{Fetch Orders.summary.count}} относятся к тому, что уезжает в рантайм, а не к тому, что вы набираете.

Выражение, вставленное в середину обычного текста, язык и прогон понимают, но подсказок внутри себя текстовое поле пока не даёт — такое поле пишите в режиме выражения или вставляйте ссылку руками.

Выпадашка

Список зависит от каретки, а не от всего поля: платформа спрашивает провайдер выражений, что уместно в этой позиции, и рисует ответ.

  • Nodes идут первыми — сначала те, что выше по потоку, потом остальные, потом неймспейс creds. Groups и сама редактируемая node из списка исключены.
  • Ключи — это выходы node. Данные текут вперёд, поэтому ссылаться на чужой вход не предлагается.
  • Глубже — ключ с объектом или массивом внутри не заканчивает ввод: список остаётся открытым и предлагает следующий шаг, .поле для объекта и [0] для массива. Вложенность набирается выбором, а не точками и скобками руками.

Клавиатура: ↑ ↓ двигают, ⏎ вставляет, Esc закрывает и оставляет текст как есть. В списке, который открылся сам после вставки, ничего не выбрано: ⏎ сохраняет то, что уже написано, ↓ уводит глубже. Это и есть ответ на «мне нужен summary или summary.count»: и то и другое, вопрос в том, какую клавишу нажать.

Пустой список — тоже ответ, и его видно: ничего не найдено, когда фильтр ничего не дал, и ссылаться пока не на что, когда в графе нет других nodes.

Синтаксис

| Форма | Что значит | | --- | --- | | {{Node.key}} | значение выхода | | {{Node.items[0]}} | элемент массива | | {{Node.items[i]}} | индекс из переменной | | {{Node.a[0].b.c}} | вложенность любой глубины |

Тип рядом с ключом берётся из dataType порта и уточняется схемой выхода, если node её объявила, — array<object> вместо array. Это договорённость, а не гарантия: несовпадение типа редактор превращает в предупреждение, а не в запрет.

Переименование node

Ссылка это переживает. Переименование переписывает все выражения, которые ссылались на старое имя, — параметры и входные ports по всему графу — в одном шаге отмены вместе с самим переименованием. Имя сопоставляется целиком, поэтому переименование Fetch не тронет {{Fetch Orders.rows}}.

Секреты

Секреты проекта адресуются неймспейсом, который в продукте уже есть:

{{creds.smtp.token}}

Значение разворачивает бэкенд — до расширения и до интерфейса оно не доходит, в предпросмотре под полем стоит маска. creds — зарезервированное имя node, так что перекрыть неймспейс своей node нельзя.

Что получилось на прогоне

После прогона поле показывает, чем выражение обернулось на самом деле:

на последнем прогоне: 2

Это слот resolved — результат прогона, отдельный и от авторского дефолта, и от того, что ввели вы. В файл проекта он не уезжает, поэтому прогон не делает проект изменённым. Если выражение не разрешилось, в строке будет сказано именно это, а не подставлено пустое значение, — битая ссылка видна без открытия логов.

Значение руками

Значение выходного port правится в inspector так же, как любое другое поле. Это самый быстрый способ проверить, что из него соберут выражения ниже по потоку, ничего не запуская. Ввод значения очищает результат прогона у этого port, поэтому в дело идёт именно введённое.

Смотрите также: ports и их слоты значений, orchestrators.