Сквозной проект: обработка заявки

Чистые данные: нормализация и валидация

Содержание курса

Форма настроена, тестовая отправка работает. Но данные, которые приходят из формы, — сырые: пользователь мог написать имя с пробелами, email заглавными буквами или оставить поле пустым. Перед тем как передавать эти данные дальше по цепочке, их нужно привести к единому виду — иначе любая последующая проверка или поиск по значению будет ненадёжной.

Нормализация строковых полей через Edit Fields

Нормализация — это приведение значений к единообразному виду до того, как они попадут в любую следующую логику. Без неё два item с "Алексей" и " алексей " будут выглядеть как разные значения, хотя содержат одно и то же имя. В n8n нормализация строк делается прямо внутри узла Edit Fields через expression. Никаких дополнительных узлов не нужно — достаточно вписать JavaScript-выражение в поле значения.

Три метода, которые покрывают большинство случаев:

  • .trim() — убирает пробелы в начале и конце строки. Пользователи часто случайно добавляют их при вводе.
  • .toLowerCase() / .toUpperCase() — унифицирует регистр. Особенно важно для email: User@Mail.com и user@mail.com — одно и то же, но без нормализации они не совпадут.
  • .replace() — заменяет нежелательные символы. Например, .replace(/\s+/g, ' ') сжимает несколько пробелов подряд в один.

Методы можно объединять в цепочку: каждый следующий применяется к результату предыдущего. В итоге " User@Mail.COM " превращается в "user@mail.com" одним выражением:

{{ $json['Email'].trim().toLowerCase() }}

Однако у этой записи есть ограничение: она предполагает, что ключ Email в JSON item существует. Если поле не было заполнено и ключ отсутствует, $json['Email'] вернёт undefined — и .trim() вызовет ошибку выполнения. Поэтому в реальном workflow используют тернарный оператор:

{{ $json['Email'] ? $json['Email'].trim().toLowerCase() : '' }}

Логика: если значение существует — применяем преобразование, иначе подставляем пустую строку. Для поля имени аналогично:

{{ $json['Имя'] ? $json['Имя'].trim() : '' }}

Подробнее о том, почему отсутствующий ключ вызывает ошибку и как с этим работать, разберём в разделе про Stop and Error.

В Edit Fields для каждого поля нужно переключиться в режим Expression и прописать преобразование. После сохранения узла проверьте панель Output — там должны быть уже приведённые значения: без лишних пробелов, email строчными буквами. Если expression написан с ошибкой, узел окрасится в красный прямо здесь, до IF.

Нормализация — это первый узел после Form Trigger. Она не проверяет, заполнены ли поля — только приводит значения к нужному виду. Проверка наличия обязательных данных — следующий шаг, который делает узел IF.