Элемент данных — это отдельная единица информации. Узлы получают один или несколько элементов, обрабатывают их и создают новые элементы. Каждый созданный элемент содержит ссылки на исходные элементы, из которых он был получен.
Понимание этого механизма особенно важно, если вы:
- Создаете собственные узлы с программной логикой и сложной обработкой входных и выходных данных.
- Используете узел Code или редактор выражений для доступа к данным из предыдущих элементов.
- Требуете сложного взаимодействия между входными и выходными элементами внутри узла.
Концепция связывания элементов
Каждый элемент, создаваемый узлом, содержит метаданные, указывающие на элемент(ы) ввода, использованные для его генерации. Это создает цепочку данных, по которой можно «откатываться» к предыдущим элементам.
Особенности:
- Если узел разветвляет или объединяет данные, цепочка linking может быть сложной.
- Понимание связывания элементов необходимо при создании узлов с программной логикой или при использовании узла Code в определенных сценариях.
Для детального изучения:
- Для разработчиков узлов: как правильно обрабатывать linking при создании узлов.
- В узле Code: как обращаться к связанным элементам в коде.
- Ошибки связывания: разбор типичных ошибок при работе с элементами в интерфейсе.
Автоматическое связывание элементов в Нейро42
Если узел не управляет связью элементов напрямую, платформа автоматически пытается определить правильные связи:
- Один вход — один выход. Выходной элемент связывается с входным.
- Один вход — несколько выходов. Все выходные элементы связываются с одним входным.
- Несколько входов — несколько выходов
- Если сохраняются все входные элементы или их часть, Нейро42 автоматически создает правильные ссылки.
- Если количество входов и выходов совпадает, элементы связываются по порядку: output-1 с input-1, output-2 с input-2 и т.д.
- Если количество элементов различается или создаются новые элементы, автоматическое связывание невозможно.
- Если узел не обрабатывает linking и автоматическая связь невозможна, система выдает ошибку.
См. раздел Ошибки связывания элементов для детальной информации.
Представьте узел, который сортирует фильмы по алфавиту, и узел, который получает список известных актеров.
Благодаря linking, отсортированный фильм может ссылаться на актёра, полученного несколькими шагами ранее, даже если порядок элементов изменился.
Методы доступа к связным элементам различаются в зависимости от способа работы:
- Через UI: drag-and-drop или таблицу input.
- Через редактор выражений: обращение к ключам связанных элементов.
- В узле Code: использование специальных выражений для доступа к parent items.
Для подробного изучения:
- Сопоставление данных в UI
- Сопоставление данных в редакторе выражений
- Работа с linking в узле Code
- Ошибки связывания элементов
В Нейро42 можно использовать связывание элементов данных для доступа к элементам, которые были созданы на предыдущих шагах рабочего процесса. Это особенно важно при работе с узлом Code, так как он позволяет программно управлять данными и ссылками между элементами.
Большинство узлов автоматически связывает каждый выходной элемент с соответствующим входным элементом, формируя цепочку данных. Если нужно, вы можете “откатываться” по этой цепочке и получать информацию о предыдущих элементах. Для концептуального понимания смотрите раздел Концепция связывания элементов. Здесь мы сосредоточимся на практическом применении в узле Code.
Когда требуется ручное связывание элементов
Нейро42 автоматически управляет linking для одного входного элемента. Однако, если у вас несколько входных элементов, бывают ситуации, когда нужно явно указывать связь с элементами. Это актуально в следующих случаях:
- Вы создаете новые элементы, которые не связаны с исходными.
- Вы возвращаете новые элементы из узла.
- Вы хотите самостоятельно контролировать связи между элементами.
Для всех остальных сценариев платформа управляет связыванием автоматически.
Как задать связывание вручную
Чтобы явно привязать новый элемент к исходному, используется поле pairedItem. Оно указывает индекс входного элемента, с которым связан выходной элемент.
Пример структуры элемента с указанием pairedItem:
[
{
«json»: {
«field1»: «значение»,
«field2»: «значение»
},
«pairedItem»: 0
}
]
Здесь pairedItem: 0 означает, что этот выходной элемент связан с первым элементом из входных данных.
Пример использования pairedItem
Допустим, у нас есть входные данные:
[
{«id»: «23423532», «name»: «Jay Gatsby»},
{«id»: «23423533», «name»: «José Arcadio Buendía»},
{«id»: «23423534», «name»: «Max Sendak»},
{«id»: «23423535», «name»: «Zaphod Beeblebrox»},
{«id»: «23423536», «name»: «Edmund Pevensie»}
]
Если мы создаем новые элементы с добавлением нового поля:
newItems = [];
for(let i=0; i<items.length; i++){
newItems.push({
«json»: {
«name»: items[i].json.name,
«aBrandNewField»: «New data for item » + i
}
});
}
return newItems;
В этом случае связь с исходными элементами теряется, так как pairedItem не указан.
Чтобы сохранить связь, добавляем pairedItem:
newItems = [];
for(let i=0; i<items.length; i++){
newItems.push({
«json»: {
«name»: items[i].json.name,
«aBrandNewField»: «New data for item » + i
},
«pairedItem»: i
});
}
return newItems;
Теперь каждый новый элемент связан с исходным элементом, что позволяет в дальнейшем использовать выражение: $(«<node-name>»).item для получения данных предыдущего элемента.