Skip to content

循环处理项目节点#

Loop Over Items 节点帮助您在需要时循环处理数据。

该节点会保存原始输入数据,并通过每次迭代从 loop 输出端口返回预定数量的数据。

当节点执行完成后,它会将所有处理过的数据合并并通过 done 输出端口返回。

何时使用循环处理项目节点#

默认情况下,n8n 节点设计用于处理输入项目列表(存在一些例外情况,下文详述)。根据您要实现的目标,通常无需在工作流中使用 Loop Over Items 节点。您可以在 n8n 中的循环处理 页面了解更多关于 n8n 如何处理多个项目的信息。

以下链接列举了可能需要使用 Loop Over Items 节点的情况:

  • 循环处理直到所有项目完成:说明 Loop Over Items 节点与常规项目处理的区别,以及何时可能需要使用该节点。
  • 节点例外情况:概述某些特定情况和节点,在这些情况下您可能需要使用 Loop Over Items 节点手动构建循环逻辑。
  • 避免速率限制:演示如何批量处理 API 请求以避免其他服务的速率限制。

节点参数#

批量大小#

设置每次调用返回的项目数量。

节点选项#

重置功能#

如果开启此选项,节点将在每次循环时重新初始化当前输入数据。当您希望 Loop Over Items 节点将传入数据视为新的数据集而非之前项目的延续时,请使用此功能。

例如,您可以配合使用带重置选项的 Loop Over Items 节点和 If 节点,在不知道需要多少页的情况下查询分页服务。循环会逐页查询,执行任何处理,并递增页码。循环重置确保循环将每次迭代识别为新的数据集。If 节点评估退出条件以决定是否执行下一次迭代。

包含有效的终止条件

对于上述示例的工作流,必须为循环包含有效的终止条件。如果您的终止条件始终不匹配,工作流执行将陷入无限循环。

启用后,您可以通过将参数表示从 固定值 切换为 表达式 来调整重置条件。表达式评估的结果将决定节点何时重置项目处理。

模板和示例#

Browse 循环处理项目(分批拆分) integration templates, or search all templates

从两个不同来源读取 RSS 订阅源#

此工作流允许您使用 Loop Over Items 节点从两个不同来源读取 RSS 订阅源。由于 RSS Feed Read 节点默认只处理接收到的第一个条目,因此您需要在工作流中使用 Loop Over Items 节点。您也可以在 n8n.io 上找到该工作流

本示例将引导您构建工作流,但假设您已熟悉 n8n 的基本操作。如需构建您的第一个工作流(包括学习如何向工作流添加节点),请参考快速入门

最终的工作流如下所示:

复制上方的工作流文件并粘贴到您的实例中,或按照以下步骤手动构建:

  1. 添加手动触发器节点
  2. 添加 Code 节点
  3. 将以下代码复制到 Code 节点:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    return [
    	{
    		json: {
    			url: 'https://medium.com/feed/n8n-io',
    		}
    	},
    	{
    		json: {
    			url: 'https://dev.to/feed/n8n',
    		}
    	}
    ];
    
  4. 添加 Loop Over Items 节点
  5. 配置 Loop Over Items:在 Batch Size 字段中设置批处理大小为 1
  6. 添加 RSS Feed Read 节点
  7. 点击 Test Workflow。这将运行工作流以加载数据到 RSS Feed Read 节点
  8. 配置 RSS Feed Read:将输入中的 url 映射到 URL 字段。您可以通过从 INPUT 面板拖放字段,或使用以下表达式实现:{{ $json.url }}
  9. 点击 Test Workflow 运行工作流并查看结果数据

检查节点是否已处理所有条目#

要检查节点是否还有待处理的条目,可使用以下表达式:{{$node["Loop Over Items"].context["noItemsLeft"]}}。该表达式返回布尔值 - 如果节点仍有数据需要处理则返回 false,否则返回 true

获取节点的当前运行索引#

要获取节点的当前运行索引,请使用以下表达式:{{$node["Loop Over Items"].context["currentRunIndex"];}}