Все ноды/Data/JSON
JSON: объединить
Сливает два JSON-объекта: ключи из B перезаписывают ключи из A. Поддерживает deep merge (рекурсивный) и shallow merge. Удобен для объединения данных из разных нод.
Тип в графе: json_merge
Exec
Можно включить выход ошибки и обработать сбой отдельным путём.
Порты можно разделить на исполнение и данные (split ports).
Как попробовать
Минимальный рабочий сценарий
- Исполнение + данные
- Данные
Запускается сразу
Как применять
Нода собирает один объект из двух: ответ внешнего сервиса плюс свои поля, набор значений по умолчанию плюс переопределения от пользователя, результаты двух параллельных веток в общий итог. Если поле всего одно — проще Установить JSON-поле.
Не путайте с нодой Объединение: та про провода, она сводит отдельные связи выполнения и данных в одну. Здесь речь только про содержимое объектов.
Как это работает
Порт «Основа» — база, «Переопределение» — то, что её перекрывает: при совпадении ключей побеждает значение из порта «Переопределение». Если порт «Основа» не подключён, основой становится то, что пришло в порт «Вход», — объект можно провести по основной цепочке.
Переключатель «Глубокое слияние» включён по умолчанию: вложенные объекты объединяются
рекурсивно, поэтому {"user": {"name": "…"}} поверх {"user": {"id": 7}} сохранит и id,
и name. Выключенный переключатель перезаписывает поле верхнего уровня целиком — user
станет ровно тем, что пришло в порт «Переопределение».
Частые ошибки
- Порт «Переопределение» обязателен. У основы есть запасной путь через порт «Вход», у перекрытия — нет: слияние с пустотой означает, что автор забыл провести связь, и нода честно падает.
- Массивы не склеиваются. Список из порта «Переопределение» заменяет список из порта «Основа» целиком, на любом уровне вложенности. Чтобы дописать элемент в массив, нужен JavaScript-код.
- Не-объект на входе превращается в пустой объект. Если в порт «Основа» пришёл список или строка, они исчезнут без ошибки, а результатом станет одно «Переопределение».
- Стороны не симметричны. Перепутанные местами «Основа» и «Переопределение» дают другой ответ, и выглядит это как «нода потеряла мои данные».
Входы
| Порт | Провод | Данные | Примечания |
|---|---|---|---|
Входinput | Исполнение + данныеexecute_data | — | Запускает шаг; принесённое значение служит исходным объектом, если порт «Основа» не подключён. |
Основаa | Данныеdata | — | Исходный объект. обязателен |
Переопределениеb | Данныеdata | — | Ключи из B перекрывают ключи из A. обязателен |
Выходы
| Порт | Провод | Данные | Примечания |
|---|---|---|---|
Значениеoutput | Исполнение + данныеexecute_data | object |
Настройки
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
Глубокое слияниеdeep | boolean | true | Рекурсивно сливать вложенные объекты (выкл = поверхностное перезаписывание) |
Общие поля
Эти три поля есть у каждой ноды: платформа добавляет их сама, а не автор ноды.
expose_error_output— Если включено, показывает выход выполнения для подключения нод, которые запускаются при сбое этой ноды.split_ports_in— Показывать отдельные порты входа для выполнения и данных вместо одного объединённого.split_ports_out— Показывать отдельные порты выхода для выполнения и данных вместо одного объединённого.