循环处理项目节点#
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 节点评估退出条件以决定是否执行下一次迭代。
包含有效的终止条件
对于上述示例的工作流,必须为循环包含有效的终止条件。如果您的终止条件始终不匹配,工作流执行将陷入无限循环。
启用后,您可以通过将参数表示从 固定值 切换为 表达式 来调整重置条件。表达式评估的结果将决定节点何时重置项目处理。
模板和示例#
从两个不同来源读取 RSS 订阅源#
此工作流允许您使用 Loop Over Items 节点从两个不同来源读取 RSS 订阅源。由于 RSS Feed Read 节点默认只处理接收到的第一个条目,因此您需要在工作流中使用 Loop Over Items 节点。您也可以在 n8n.io 上找到该工作流。
本示例将引导您构建工作流,但假设您已熟悉 n8n 的基本操作。如需构建您的第一个工作流(包括学习如何向工作流添加节点),请参考快速入门。
最终的工作流如下所示:
复制上方的工作流文件并粘贴到您的实例中,或按照以下步骤手动构建:
- 添加手动触发器节点
- 添加 Code 节点
- 将以下代码复制到 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', } } ];
- 添加 Loop Over Items 节点
- 配置 Loop Over Items:在 Batch Size 字段中设置批处理大小为
1
- 添加 RSS Feed Read 节点
- 点击 Test Workflow。这将运行工作流以加载数据到 RSS Feed Read 节点
- 配置 RSS Feed Read:将输入中的
url
映射到 URL 字段。您可以通过从 INPUT 面板拖放字段,或使用以下表达式实现:{{ $json.url }}
- 点击 Test Workflow 运行工作流并查看结果数据
检查节点是否已处理所有条目#
要检查节点是否还有待处理的条目,可使用以下表达式:{{$node["Loop Over Items"].context["noItemsLeft"]}}
。该表达式返回布尔值 - 如果节点仍有数据需要处理则返回 false
,否则返回 true
。
获取节点的当前运行索引#
要获取节点的当前运行索引,请使用以下表达式:{{$node["Loop Over Items"].context["currentRunIndex"];}}
。