Edit Fields (Set) — преобразование данных
В большинстве сценариев нужно не просто пробросить данные дальше, а слегка их преобразовать: переименовать поле, добавить новое, удалить лишнее, привести к нужному формату. Для таких задач существует узел Edit Fields (в более старых версиях он назывался Set).
Примечание. В разных версиях n8n этот узел может называться
Edit Fields,Setили находиться в категорииData Transformation. Принцип работы один и тот же.
Зачем он нужен
Представьте, что после запроса в API вы получили объект с десятком полей, а дальше в сценарии нужно использовать только два из них и слегка переименовать. Без Edit Fields пришлось бы тащить весь объект до конца и в каждом следующем узле выписывать длинные пути. С Edit Fields можно один раз построить компактный объект и работать с ним.
Два режима
У узла обычно есть два режима работы:
- Manual (или просто список полей) — вы явно перечисляете поля, которые должны быть на выходе. Каждое поле — это «имя + значение». Значение может быть статичным или выражением.
- JSON — вы пишете весь выходной JSON целиком. Удобно, когда структура сложная.
Помимо этого, у узла есть переключатель «оставлять только указанные поля» против «добавить указанные поля к существующим». Имя опции в разных версиях немного отличается; смысл прост: либо новый item — это только то, что вы перечислили, либо это исходный item плюс перечисленные поля.
Пример
Допустим, после HTTP Request пришёл такой объект:
{
"id": 42,
"first_name": "Анна",
"last_name": "Иванова",
"email": "anna@example.com",
"internal_score": 0.81,
"raw_payload": { "...": "..." }
}А дальше нужны только полное имя и email. В Edit Fields добавим два поля:
fullName={{ $json.first_name }} {{ $json.last_name }}email={{ $json.email }}
Включим режим «оставить только эти поля». На выходе получится:
{
"fullName": "Анна Иванова",
"email": "anna@example.com"
}Когда применять
- Подготовить данные перед отправкой в другой сервис (нужен конкретный формат).
- Собрать ответ для
Respond to Webhook. - Объединить или переименовать поля перед записью в базу.
- Принудительно привести типы: преобразовать строку в число, дату в нужный формат и т.п.
На что обратить внимание
- Типы. Если вы кладёте в поле выражение
{{ $json.price * 1.2 }}— на выходе будет число. Если оборачиваете в строку ({{ ... }}внутри обычного текста) — получится строка. В критичных местах (запись в базу, отправка в API) проверяйте тип. - Пустые значения. Если выражение обращается к несуществующему полю, на выходе может оказаться
undefinedили пустая строка — зависит от версии. Подстраховывайте опциональным chaining'ом. - Несколько items. Узел применит правила к каждому входящему item — на выходе будет столько же items, сколько на входе.
Edit Fields — один из самых частых узлов. В сложных сценариях он встречается десятками. Привыкайте использовать его как «контракт»: после такого-то узла данные должны выглядеть вот так.