N8N中文教程
使用 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;

|---| 每个新项目现在都会链接到用于创建它的源项目。