Выражения n8n: $json, $node, даты и fallback ¶
Обновлено: 2026-05-29
Выражения подставляют динамические данные в поля нод. Они пишутся внутри {{ }} и позволяют использовать текущий item, данные предыдущих нод, даты, условия и JavaScript-операции. Без выражений workflow остаётся статичным.
Базовый синтаксис ¶
{{ $json.email }}
{{ $json.user.name }}
{{ $json.items[0].price }}
Если поле может отсутствовать, добавляйте безопасную проверку:
{{ $json.user?.name || "Без имени" }}
{{ ($json.text || "").trim() }}
{{ Number($json.amount || 0) }}
Данные из другой ноды ¶
Когда нужно взять результат конкретной ноды, используйте $node:
{{ $node["Normalize Lead"].json.email }}
{{ $node["Get Token"].json.access_token }}
Старайтесь давать нодам стабильные имена. Если нода называется Set1, выражение станет непонятным и хрупким.
Условия и даты ¶
Короткие условия удобно писать тернарным оператором:
{{ $json.total > 10000 ? "vip" : "standard" }}
{{ $json.status === "paid" ? "Оплачен" : "Не оплачен" }}
Для дат используйте $now и $today:
{{ $now.toISO() }}
{{ $now.plus({ days: 1 }).toISODate() }}
{{ $now.setZone("Europe/Amsterdam").toFormat("yyyy-LL-dd HH:mm") }}
Частые ошибки ¶
Ошибка Cannot read properties of undefined почти всегда означает, что выражение обращается к полю, которого нет. Проверьте input проблемной ноды в execution и добавьте ?. или fallback. Если данные теряются после Merge или Code node, изучите item linking.
Практический контекст для внедрения ¶
Эта страница полезна не как абстрактная справка, а как рабочая инструкция под тему «Выражения n8n: $json, $node, даты и fallback» в практическом внедрении n8n. Перед изменением workflow зафиксируйте источник события: входные данные по теме expressions: webhook, schedule, ручной запуск или событие внешнего сервиса. Так проще отделить ошибку данных от ошибки настройки n8n и не превратить исправление в набор случайных правок.
Для production-версии заранее назначьте владельца процесса, точку восстановления и критерий успешного запуска. Главный риск для этой темы: пустые входы, дубли, разные форматы payload, неопределённый владелец процесса. Его лучше закрывать не дополнительными нодами, а явным контрактом входных данных, idempotency-ключом, логированием решения и отдельной веткой обработки ошибок.
| Слой | Что проверить | Почему это важно |
|---|---|---|
| Вход | payload, внешний ID, timestamp, источник события | без этого невозможно отличить новый item от повтора |
| Логика | условия IF/Switch, mapping полей, fallback | ошибка часто появляется не в ноде, а в переходе между ветками |
| Выход | статус операции, запись audit trail, ссылка на execution | после запуска нужно быстро понять, что workflow сделал с конкретным объектом |
| Эксплуатация | successful executions, skipped items, retry count, error branch usage | метрики показывают деградацию раньше, чем пользователи начинают жаловаться |
Как проверить качество страницы на практике ¶
- Соберите один тестовый пример по теме «Выражения n8n: $json, $node, даты и fallback» и прогоните его через workflow вручную.
- Проверьте пустой вход, повтор того же события и ошибку внешнего API.
- Убедитесь, что в execution видно решение workflow: почему ветка была выбрана и какой внешний объект изменён.
- Добавьте ссылку на эту страницу в runbook, если сценарий будет поддерживать не только автор автоматизации.
Что добавить перед публикацией или запуском ¶
Чтобы материал по теме «Выражения n8n: $json, $node, даты и fallback» не оставался короткой справкой, используйте его как чеклист подготовки workflow. Минимально зафиксируйте источник данных: входные данные по теме expressions: webhook, schedule, ручной запуск или событие внешнего сервиса; затем опишите ожидаемый результат, владельца процесса, способ отката и метрики контроля. Это превращает страницу из карточки в практическую инструкцию, которую можно дать разработчику, интегратору или владельцу процесса.
Особое внимание стоит уделить риску: пустые входы, дубли, разные форматы payload, неопределённый владелец процесса. Для n8n это важно, потому что одна и та же ошибка может выглядеть как проблема ноды, credentials, внешнего API, формата payload или инфраструктуры. Перед production-публикацией лучше проверить симптом на минимальном workflow, а уже потом переносить исправление в основной сценарий.
- Добавьте один реальный пример входного payload без секретов и персональных данных.
- Опишите happy path, пустой вход, повтор события и ошибку внешнего сервиса.
- Подключите наблюдаемость: successful executions, skipped items, retry count, error branch usage.
- Укажите, где хранится audit trail и кто принимает решение при неоднозначном результате.
- Проверьте, что страница связана внутренними ссылками с рецептом, ошибкой, нодой или playbook по этой же теме.
Что читать дальше ¶
Больше готовых примеров — в шпаргалке выражений, а базовая модель данных описана в работе с данными.
Чеклист внедрения ¶
Перед публикацией workflow проверьте его на нескольких реальных примерах данных, а не только на одном успешном тесте. Убедитесь, что обязательные поля валидируются, пустые значения не ломают выражения, а каждая ветка имеет понятное завершение.
- Ноды названы по действию, а не по типу.
- Входные данные нормализованы в начале workflow.
- Есть fallback для неожиданных статусов и пустых полей.
- Ошибки пишутся в execution и при необходимости отправляются в alert.
Как понять, что тема нужна ¶
Если одна и та же проблема повторяется в нескольких workflow, лучше оформить её как отдельный шаблон: нормализация входа, проверка credentials, обработка ошибки или типовой фрагмент выражения. Так база знаний становится не набором заметок, а рабочей системой поддержки n8n.