JavaScript в n8n: примеры для Code node ¶
Обновлено: 2026-05-29
JavaScript в n8n чаще всего используется в Code node для трансформации данных. Он полезен, когда Set, IF и Switch уже не хватает: нужно пройтись по массиву, сгруппировать строки, удалить дубли или подготовить payload для API.
Возврат items ¶
return items.map(item => ({
json: {
...item.json,
email: (item.json.email || "").toLowerCase(),
},
}));
Выходом должен быть массив objects с полем json.
Нормализация лида ¶
return items.map(item => {
const lead = item.json;
return { json: {
name: lead.name || lead.full_name || "Без имени",
email: (lead.email || "").trim().toLowerCase(),
phone: lead.phone || null,
source: lead.source || "unknown",
created_at: new Date().toISOString(),
}};
});
Фильтр и дедупликация ¶
const seen = new Set();
const result = [];
for (const item of items) {
const email = (item.json.email || "").toLowerCase();
if (!email || seen.has(email)) continue;
seen.add(email);
result.push({ json: item.json });
}
return result;
Типичные ошибки ¶
Частые проблемы: возвращается объект вместо массива, данные берутся из item.email вместо item.json.email, код ломает item linking, токены вставлены прямо в код вместо credentials.
Инженерный контракт для кода в n8n ¶
Статья JavaScript в n8n: примеры для Code node должна помогать писать код, который не ломает data flow. До Code node нормализуйте вход, внутри кода явно обрабатывайте пустые поля и arrays, после кода возвращайте предсказуемый JSON. Если количество output items отличается от input items, отдельно проверьте item linking.
- не храните secrets в коде: используйте credentials или env, если это допустимо в вашей схеме
- не смешивайте парсинг, бизнес-решение и HTTP-вызов в одном фрагменте без причины
- оставляйте примеры входа/выхода рядом с workflow или в комментарии
- для production добавляйте тесты на пустой, частичный и неожиданный payload
- если выражение можно сделать без Code node — сначала оцените более простую ноду
Практический контекст для внедрения ¶
Эта страница полезна не как абстрактная справка, а как рабочая инструкция под тему «JavaScript в n8n: примеры для Code node» в практическом внедрении n8n. Перед изменением workflow зафиксируйте источник события: входные данные по теме javascript: 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 | метрики показывают деградацию раньше, чем пользователи начинают жаловаться |
Как проверить качество страницы на практике ¶
- Соберите один тестовый пример по теме «JavaScript в n8n: примеры для Code node» и прогоните его через workflow вручную.
- Проверьте пустой вход, повтор того же события и ошибку внешнего API.
- Убедитесь, что в execution видно решение workflow: почему ветка была выбрана и какой внешний объект изменён.
- Добавьте ссылку на эту страницу в runbook, если сценарий будет поддерживать не только автор автоматизации.
Что читать дальше ¶
Для общей модели откройте Code node и item linking.
Чеклист кода ¶
Код в n8n должен уменьшать сложность, а не прятать бизнес-логику. Если задачу можно ясно решить через Set, IF или Switch, лучше оставить её визуальной. Code node стоит использовать для массивов, агрегатов, сложного форматирования и нестандартных API-подписей.
- На выходе всегда массив items с полем
json. - Секреты берутся из credentials, а не из текста кода.
- Ошибки и пустые поля обработаны явно.
- После Code node проверен item linking, если дальше используются данные предыдущих нод.
Как тестировать ¶
Проверяйте код минимум на трёх входах: обычный item, item с пустыми необязательными полями и item с неожиданным типом данных. Это быстрее, чем разбирать production execution после того, как внешний API прислал новый формат ответа.