Skip to content

代码节点中的项目链接#

使用 n8n 的数据项链接来访问当前数据项之前的数据项。这在使用代码节点时也有影响。大多数节点将每个输出数据项链接到输入数据项。这创建了一个数据项链,您可以沿着这个链向后访问之前的数据项。有关此主题的更深入概念概述,请参阅数据项链接概念。本文档重点介绍实际使用示例。

使用代码节点时,如果您希望能够在工作流后续阶段使用 $("<node-name>").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;

现在每个新数据项都链接到用于创建它的数据项。