Углублённая модель данных n8n

Merge и потеря связей между items

Содержание курса

Диагностика через execution data: нахождение первого расхождения request_id

Зная, что паросочетание сломано, нужно точно установить, в каком output-item это происходит впервые. Execution data даёт всё необходимое — но здесь есть техническая сложность: оба входа Merge используют поле с одним и тем же именем request_id. По умолчанию при конфликте имён Merge перезаписывает значение, отдавая приоритет Input 2. В итоге в output-item остаётся только одно поле request_id, и сравнить оба исходных значения «в одной строке» напрямую невозможно.

Чтобы обойти это ограничение, до Merge добавьте в каждую ветку ноду Edit Fields и явно переименуйте поле: в первой ветке request_id → request_id_input1, во второй request_id → request_id_input2. После этого Merge объединит два различимых поля без конфликта, и их значения будут видны в output-item рядом. Добавив эти ноды, вы сможете воспроизвести таблицу ниже.

Алгоритм диагностики. Сначала откройте execution data нод обеих веток непосредственно перед Merge — там вы видите два независимых массива items с их request_id. Порядок в fixture:

  • Вход 1: ["R-101", "R-102", "R-103"]
  • Вход 2: ["R-103", "R-101", "R-102"]

Это уже достаточное доказательство проблемы: если входные массивы упорядочены по-разному, позиционное соответствие заведомо неверно. Данные до Merge — первичный и наиболее надёжный источник.

Чтобы подтвердить расхождение в output, посмотрите на поля request_id_input1 и request_id_input2 в каждом output-item:

Output-item request_id_input1 request_id_input2 Совпадают?
0 R-101 R-103 ✗
1 R-102 R-101 ✗
2 R-103 R-102 ✗

Первое расхождение — сразу на item с индексом 0. Именно здесь pairedItem output-item тянется к двум несовместимым source items. Если downstream-нода использует выражение вроде $('Source Requests').item.json.payload, n8n пытается подняться по этому сломанному pairedItem и бросает ошибку Multiple matching items for expression: однозначно выбрать один source item невозможно.

Важный вывод для практики: основной диагностический шаг — сравнение порядка входных массивов до Merge, а не чтение output. Output с переименованными полями лишь подтверждает расхождение наглядно. Когда несовпадение видно уже в первой строке, проверять остальные нет необходимости: любая перестановка делает ненадёжными все затронутые позиции.

Начать заново?

Помощник начнёт новый диалог по этой задаче. Текущая переписка останется в истории до конца срока хранения.

О переписке

Можно приложить до трёх фото PNG, JPEG или WebP по 5 МБ.

Переписка и фото хранятся 90 дней после последнего принятого сообщения. Преподаватель получит доступ к диалогу, когда вы попросите его помочь.

Проверка решения остаётся отдельным действием.