Чистые данные: нормализация и валидация
Содержание курса
Валидация обязательных полей узлом IF
После того как Edit Fields привёл значения к нужному виду, нужно ответить на вопрос: а есть ли там вообще что-то полезное? Именно для этого к цепочке подключается узел IF.
IF работает просто: он проверяет заданное условие для каждого item и отправляет его в одну из двух веток — true или false. В контексте валидации удобнее мыслить от обратного: условие описывает проблему, а не норму.
Если условие формулируется как «поле пустое», то:
- ветка true — данные невалидны, item нужно остановить;
- ветка false — данные в порядке, обработка продолжается дальше.
Простейшее условие для проверки email выглядит так:
{{ $json.email === '' }}
Но здесь есть ловушка. Если пользователь вообще не заполнил поле, которое в форме помечено как необязательное, n8n может не создать этот ключ в JSON item вовсе. Тогда $json.email равен не пустой строке, а undefined — и условие === '' вернёт false. Невалидный item проскользнёт в ветку обработки, как будто всё нормально.
Надёжное условие закрывает оба случая сразу:
{{ !$json.email || $json.email.trim() === '' }}
!$json.email срабатывает, если ключ отсутствует или равен undefined/null/пустой строке. .trim() === '' добавляет защиту от строки, которая выглядит непустой, но состоит только из пробелов — например, если пользователь случайно нажал пробел и отправил форму.
В интерфейсе n8n условие IF настраивается в разделе Conditions: выбираем тип значения — Expression, и вставляем выражение выше. Можно добавить несколько условий и объединить их через AND/OR — например, проверять сразу имя и email.
Когда условие срабатывает (ветка true), item уходит дальше по этой ветке — туда будет подключён узел остановки. Ветка false при этом продолжает цепочку с чистыми и проверенными данными.
