Как устроены данные между узлами
Когда сценарий выполняется, данные передаются от одного узла к другому. Если вы понимаете, в каком виде они передаются, всё остальное — выражения, циклы, преобразования — становится сильно понятнее.
Примечание. Внутреннее устройство n8n стабильно, но названия отдельных опций и операций могут со временем меняться. Если что-то выглядит иначе — это нормально, общая модель всё та же.
Items: данные — это массив
Каждый узел в n8n получает на вход и отдаёт на выход массив элементов — items. Item — это один объект данных.
Это важно: даже если узел вернул всего один результат, это всё равно массив из одного элемента, а не «голый» объект.
Один item обычно состоит из двух частей:
json— основная полезная нагрузка в виде JSON. Это то, что вы видите в интерфейсе и с чем работаете в выражениях.binary— необязательная часть с двоичными данными (файлы, изображения). Большинство узлов её не использует, и о ней можно не думать, пока не начнёте работать с файлами.
Когда мы пишем {{ $json.body.question }}, мы говорим: «возьми у текущего item его JSON-часть и обратись к полю body.question».
Один элемент или много
Узлы работают по простому правилу: на каждый входящий item — выполниться по одному разу и положить результаты в выход.
Примеры:
Webhookобычно отдаёт один item — данные одного входящего HTTP-запроса.- Запрос в базу данных, который вернул 50 строк, отдаст 50 items.
HTTP Requestк API, который вернул массив объектов, по умолчанию вернёт один item с этим массивом внутри (если не включён режим, при котором каждый элемент массива становится отдельным item — у разных узлов это сделано по-разному).
Если узлу на вход пришло 50 items, он будет выполнен 50 раз — по одному разу на каждый item. Это значит, что узел HTTP Request, поставленный после узла, который вернул 50 строк из базы, отправит 50 HTTP-запросов.
Как смотреть на данные в n8n
Когда вы открываете узел после выполнения сценария, n8n показывает входящие и исходящие данные. Обычно есть несколько режимов отображения:
- Table — табличный вид, удобен, когда у всех items одинаковая структура.
- JSON — «сырой» JSON, удобен, чтобы понять точную структуру.
- Schema — схема: какие поля есть, какого типа.
Привыкните при разработке всегда сверяться с JSON-видом — оттуда понятнее всего, как обращаться к полям в выражениях.
Что хранится между узлами
После того как узел выполнен, его выходные данные доступны не только следующему узлу, но и всем последующим узлам в сценарии — через ссылку на имя узла. Об этом — в следующем уроке про выражения.
Главное
- Между узлами всегда передаётся массив items.
- Item — это объект с полями
json(и опциональноbinary). - Сколько items на входе — столько раз обычно выполняется узел.
- Текущий item в выражениях — это
$json.