Все ноды/Data/JSON
JSON-слияние
Сливает два JSON-объекта: ключи из B перезаписывают ключи из A. Поддерживает deep merge (рекурсивный) и shallow merge. Удобен для объединения данных из разных нод.
Тип в графе: json_merge
Exec
Можно включить ветку ошибки (expose_error_output) и обработать сбой отдельным путём.
Порты можно разделить на исполнение и данные (split ports).
Как попробовать
Минимальный рабочий воркфлоу
- Исполнение + данные
Запускается сразу
Как применять
Нода собирает один объект из двух: ответ внешнего сервиса плюс свои поля, набор значений по умолчанию плюс переопределения от пользователя, результаты двух параллельных веток в общий итог. Если поле всего одно — проще Установить JSON-поле.
Не путайте с нодой Объединение: та про провода, она сводит отдельные связи выполнения и данных в одну. Здесь речь только про содержимое объектов.
Как это работает
«Base» — основа, «Override» — то, что её перекрывает: при совпадении ключей побеждает значение из «Override». Если «Base» не подключён, основой становится то, что пришло в порт «Input», — объект можно провести по основной цепочке.
Переключатель «Глубокое слияние» включён по умолчанию: вложенные объекты объединяются
рекурсивно, поэтому {"user": {"name": "…"}} поверх {"user": {"id": 7}} сохранит и id,
и name. Выключенный переключатель перезаписывает поле верхнего уровня целиком — user
станет ровно тем, что пришло в «Override».
Частые ошибки
- «Override» обязателен. У основы есть запасной путь через «Input», у перекрытия — нет: слияние с пустотой означает, что автор забыл провести связь, и нода честно падает.
- Массивы не склеиваются. Список из «Override» заменяет список из «Base» целиком, на любом уровне вложенности. Чтобы дописать элемент в массив, нужен JavaScript-код.
- Не-объект на входе превращается в пустой объект. Если в «Base» пришёл список или строка, они исчезнут без ошибки, а результатом станет одно «Override».
- Стороны не симметричны. Перепутанные местами «Base» и «Override» дают другой ответ, и выглядит это как «нода потеряла мои данные».
Входы
| Порт | Провод | Данные | Примечания |
|---|---|---|---|
Inputinput | Исполнение + данныеexecute_data | — | Run trigger; its payload is used as the base object when the Base port is not connected. |
Basea | Данныеdata | — | Base object |
Overrideb | Данныеdata | — | Keys from B override A |
Выходы
| Порт | Провод | Данные | Примечания |
|---|---|---|---|
Resultoutput | Исполнение + данныеexecute_data | object |
Настройки
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
Глубокое слияниеdeep | boolean | true | Рекурсивно сливать вложенные объекты (выкл = поверхностное перезаписывание) |
Общие поля
Эти три поля есть у каждой ноды: платформа добавляет их сама, а не автор ноды.
expose_error_output— Если включено, показывает выход выполнения для подключения нод, которые запускаются при сбое этого шага.split_ports_in— Показывать отдельные порты входа для выполнения и данных вместо одного объединённого.split_ports_out— Показывать отдельные порты выхода для выполнения и данных вместо одного объединённого.