Как вернуть данные из любого шага воркфлоу, даже если они были преобразованы позже
В Нейро42 каждый элемент входных данных хранит ссылку на те элементы, из которых он был создан. Это означает, что ваш ИИ-агент может “вернуться назад” и получить любую связанную информацию, даже если данные были преобразованы несколькими узлами позже.
Для этого используется метод:
$(«Имя узла»).itemMatching(currentNodeInputIndex)
Он позволяет сопоставить текущий элемент (по индексу) с элементом, который участвовал в его создании в другом узле.
Когда это нужно?
Этот механизм незаменим, если:
- вы упростили или отфильтровали данные промежуточными узлами, но хотите вернуть поле из исходного набора
- нужно восстановить email, ID, дату или другие атрибуты
- при построении ИИ-агента требуется хранить ссылку на оригинальные данные, но не дублировать их в каждом узле
Разбор примера
Представим последовательность узлов:
- Customer Datastore
Генерирует элементы вроде:
[
{
«id»: «23423532»,
«name»: «Jay Gatsby»,
«email»: «gatsby@west-egg.com»,
«notes»: «Keeps asking about a green light??»,
«country»: «US»,
«created»: «1925-04-10»
},
{
«id»: «23423533»,
«name»: «José Arcadio Buendía»,
«email»: «jab@macondo.co»,
«notes»: «Lots of people named after him. Very confusing»,
«country»: «CO»,
«created»: «1967-05-05»
}
]
- Edit Fields
Упрощает структуру, оставляя только:
[
{ «name»: «Jay Gatsby» },
{ «name»: «José Arcadio Buendía» }
]
Теперь email потерян — но его можно вернуть.
- Code Node
Восстанавливает емайл, сопоставляя элементы по индексу:
[
{
«name»: «Jay Gatsby»,
«restoreEmail»: «gatsby@west-egg.com»
},
{
«name»: «José Arcadio Buendía»,
«restoreEmail»: «jab@macondo.co»
}
]
Код восстановления связанных данных
JavaScript (Code node)
for (let i = 0; i < $input.all().length; i++) {
$input.all()[i].json.restoreEmail = $(‘Customer Datastore (n8n training)’)
.itemMatching(i)
.json.email;
}
return $input.all();
Как это работает
- i — индекс текущего элемента
- $(‘Customer Datastore)’) — ссылка на узел-источник
- .itemMatching(i) — возвращает элемент, который соответствует текущему по индексу
- .json.email — извлекает нужные данные