Edit Fields (Set) — преобразование данных

В большинстве сценариев нужно не просто пробросить данные дальше, а слегка их преобразовать: переименовать поле, добавить новое, удалить лишнее, привести к нужному формату. Для таких задач существует узел Edit Fields (в более старых версиях он назывался Set).

Примечание. В разных версиях n8n этот узел может называться Edit Fields, Set или находиться в категории Data Transformation. Принцип работы один и тот же.

Зачем он нужен

Представьте, что после запроса в API вы получили объект с десятком полей, а дальше в сценарии нужно использовать только два из них и слегка переименовать. Без Edit Fields пришлось бы тащить весь объект до конца и в каждом следующем узле выписывать длинные пути. С Edit Fields можно один раз построить компактный объект и работать с ним.

Два режима

У узла обычно есть два режима работы:

  1. Manual (или просто список полей) — вы явно перечисляете поля, которые должны быть на выходе. Каждое поле — это «имя + значение». Значение может быть статичным или выражением.
  2. 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 — один из самых частых узлов. В сложных сценариях он встречается десятками. Привыкайте использовать его как «контракт»: после такого-то узла данные должны выглядеть вот так.