使用 n8n/Key_concepts/Data/Data_mapping/Data_item_linking
Code 节点中的项目链接#
使用 n8n 的项目链接(item linking)功能,可以访问当前项目之前出现的项目的数据。这在使用 Code 节点时也有重要影响。大多数节点会将每个输出项目与一个输入项目进行链接,从而形成一条项目链,你可以沿此链回溯以访问之前的项目。如需更深入的概念性介绍,请参考 项目链接概念。本文档重点介绍实际使用示例。
在使用 Code 节点时,存在一些场景下,如果你希望后续工作流中能使用 $("<节点名称>").item 访问数据,则需要手动提供项目链接信息。这些场景仅在你有多个输入项目时才适用。对于单个项目,n8n 会自动处理项目链接。
这些场景包括:
- 添加新项目:新项目不会链接到任何输入项目。
- 返回新项目。
- 希望手动控制项目链接。
n8n 的自动项目链接 已经处理了其他情况。
要控制项目链接,在返回数据时设置 pairedItem 字段。例如,若要链接到索引为 0 的输入项目:
1
2
3
4
5
6
7
8
9| ``` [ { "json":{ ...}, // 生成此输出项目的输入项目的索引 "pairedItem":0 } ]
---|---
### `pairedItem` 使用示例#
假设有如下输入数据:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| ```
[
{
"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"
}
]---|--- 并用它生成新的项目,只包含姓名以及一段新增的数据:
1
2
3
4
5
6
7
8
9
10
11
12
13
14| ``` 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;
---|---
此时 `newItems` 是一个不包含 `pairedItem` 的项目数组。这意味着无法从这些新项目追溯回用于生成它们的原始输入项目。
添加 `pairedItem` 字段:1 2 3 4 5 6 7 8 9 10 11 12 13 14
| ```
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;|---| 每个新项目现在都会链接到用于创建它的源项目。