Структура данных
Формат данных в n8n — items, json, binary, метаданные
Основа: Items
Заголовок раздела «Основа: Items»В n8n данные передаются между нодами в виде items — массива объектов.
[ { "json": { "id": 1, "name": "John", "email": "john@example.com" } }, { "json": { "id": 2, "name": "Jane", "email": "jane@example.com" } }]Структура Item
Заголовок раздела «Структура Item»Каждый item содержит:
| Поле | Тип | Описание |
|---|---|---|
json | Object | Основные данные |
binary | Object | Бинарные данные (файлы) |
pairedItem | Object | Связь с исходным item |
JSON данные
Заголовок раздела «JSON данные»Основной контейнер для данных:
{ "json": { "любой_ключ": "любое_значение", "nested": { "object": true }, "array": [1, 2, 3] }}Binary данные
Заголовок раздела «Binary данные»Для файлов и бинарных данных:
{ "json": { "fileName": "image.png" }, "binary": { "data": { "data": "base64_encoded_content...", "mimeType": "image/png", "fileName": "image.png", "fileSize": 12345 } }}Доступ к данным
Заголовок раздела «Доступ к данным»Текущий item
Заголовок раздела «Текущий item»// В Expression{{ $json.fieldName }}{{ $json.nested.value }}{{ $json["field-with-dash"] }}Binary данные
Заголовок раздела «Binary данные»// Получить binary данные{{ $binary.data }}
// Метаданные файла{{ $binary.data.fileName }}{{ $binary.data.mimeType }}Методы работы с items
Заголовок раздела «Методы работы с items»Input методы
Заголовок раздела «Input методы»| Метод | Описание |
|---|---|
$input.all() | Все items |
$input.first() | Первый item |
$input.last() | Последний item |
$input.item | Текущий item |
Примеры
Заголовок раздела «Примеры»// Все items{{ $input.all() }}
// Первый item{{ $input.first().json.name }}
// Количество items{{ $input.all().length }}// Получить все itemsconst items = $input.all();
// Обработать каждыйreturn items.map(item => ({ json: { ...item.json, processed: true }}));Доступ к другим нодам
Заголовок раздела «Доступ к другим нодам»По имени ноды
Заголовок раздела «По имени ноды»// Данные из конкретной ноды{{ $('HTTP Request').item.json.data }}
// Все items из ноды{{ $('HTTP Request').all() }}
// Первый item{{ $('HTTP Request').first().json }}Методы ноды
Заголовок раздела «Методы ноды»| Метод | Описание |
|---|---|
$('Node').all() | Все items |
$('Node').first() | Первый item |
$('Node').last() | Последний item |
$('Node').item | Соответствующий item |
$('Node').itemMatching(index) | Item по индексу |
Преобразование данных
Заголовок раздела «Преобразование данных»Изменение структуры
Заголовок раздела «Изменение структуры»// В Code нодеconst items = $input.all();
return items.map(item => ({ json: { // Переименование полей userId: item.json.id, fullName: item.json.name, // Добавление полей createdAt: new Date().toISOString(), // Вычисляемые поля isAdult: item.json.age >= 18 }}));Фильтрация
Заголовок раздела «Фильтрация»const items = $input.all();
return items.filter(item => item.json.status === 'active');Агрегация
Заголовок раздела «Агрегация»const items = $input.all();
const total = items.reduce((sum, item) => sum + item.json.amount, 0);
return [{ json: { total } }];Работа с массивами
Заголовок раздела «Работа с массивами»Массив внутри item
Заголовок раздела «Массив внутри item»{ "json": { "user": "John", "orders": [ { "id": 1, "total": 100 }, { "id": 2, "total": 200 } ] }}Разворачивание (Split)
Заголовок раздела «Разворачивание (Split)»Нода Split Out разбивает массив на отдельные items:
До: 1 item с массивом [a, b, c]После: 3 items: a, b, cСворачивание (Aggregate)
Заголовок раздела «Сворачивание (Aggregate)»Нода Aggregate объединяет items в массив:
До: 3 items: a, b, cПосле: 1 item с массивом [a, b, c]Типы данных
Заголовок раздела «Типы данных»Примитивы
Заголовок раздела «Примитивы»| Тип | Пример |
|---|---|
| String | "Hello" |
| Number | 42, 3.14 |
| Boolean | true, false |
| Null | null |
Сложные типы
Заголовок раздела «Сложные типы»| Тип | Пример |
|---|---|
| Object | { "key": "value" } |
| Array | [1, 2, 3] |
| Date | "2024-01-15T10:30:00Z" |
Проверка типов
Заголовок раздела «Проверка типов»// В Expression{{ typeof $json.value }}
// В Codeif (typeof item.json.value === 'string') { // ...}Специальные переменные
Заголовок раздела «Специальные переменные»| Переменная | Описание |
|---|---|
$json | JSON текущего item |
$binary | Binary данные текущего item |
$itemIndex | Индекс текущего item |
$runIndex | Номер выполнения в цикле |
$now | Текущее время (DateTime) |
$today | Сегодняшняя дата |
Паттерны
Заголовок раздела «Паттерны»Объединение данных из разных источников
Заголовок раздела «Объединение данных из разных источников»Обогащение данных
Заголовок раздела «Обогащение данных»// Добавить данные из lookupconst users = $input.all();const roles = $('Get Roles').all();
return users.map(user => { const role = roles.find(r => r.json.userId === user.json.id ); return { json: { ...user.json, role: role?.json.name || 'unknown' } };});Следующие шаги
Заголовок раздела «Следующие шаги»- Слияние данных — объединение потоков
- Трансформация — преобразование данных
- Expressions — работа с выражениями