Перейти к содержанию

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 прислал новый формат ответа.