Loop Over Items 节点#
Loop Over Items 节点帮助您在需要时循环数据。
节点保存原始传入数据,并在每次迭代中通过 loop 循环 输出返回预定义数量的数据。
当节点执行完成时,它会合并所有处理过的数据并通过 done 完成 输出返回。
何时使用 Loop Over Items 节点#
默认情况下,n8n 节点被设计为处理输入项目列表(有一些例外,详细信息如下所述)。根据您要实现的目标,您通常不需要在工作流中使用 Loop Over Items 节点。您可以在 n8n 中的循环 页面上了解更多关于 n8n 如何处理多个项目的信息。
这些链接突出了 Loop Over Items 节点可能有用的一些情况:
- 循环直到处理完所有项目:描述 Loop Over Items 节点与正常项目处理的不同之处以及何时您可能想要合并此节点。
- 节点例外:概述您可能需要使用 Loop Over Items 节点手动构建循环逻辑的特定情况和节点。
- 避免速率限制:演示如何批处理 API 请求以避免其他服务的速率限制。
节点参数#
Batch Size 批次大小#
输入每次调用要返回的项目数。
节点选项#
Reset 重置#
如果开启,节点将在每次循环时重置,当前输入数据会重新初始化。当您希望 Loop Over Items 节点将传入数据视为一组新数据而不是先前项目的延续时使用此选项。
例如,您可以将 Loop Over Items 节点与重置选项和 If 节点 一起使用,在您不知道需要多少页时查询分页服务。循环一次查询一页,执行任何处理,并增加页码。循环重置确保循环将每次迭代识别为一组新数据。If 节点评估退出条件以决定是否执行另一次迭代。
包含有效的终止条件
对于如上所述的工作流,包含循环的有效终止条件至关重要。如果您的终止条件永远不匹配,您的工作流执行将陷入无限循环。
启用后,您可以通过将参数表示从 Fixed 固定 切换到 Expression 表达式 来调整重置条件。您的表达式评估结果决定节点何时重置项目处理。
模板和示例#
从两个不同来源读取 RSS 源#
此工作流允许您使用 Loop Over Items 节点从两个不同来源读取 RSS 源。您需要在工作流中使用 Loop Over Items 节点,因为 RSS Feed Read 节点仅处理它接收的第一个项目。您还可以在 n8n.io 上找到工作流。
该示例通过构建工作流来演示,但假设您已经熟悉 n8n。要构建您的第一个工作流,包括学习如何向工作流添加节点,请参阅 Try it out。
最终工作流如下所示:
复制上面的工作流文件并粘贴到您的实例中,或按照以下步骤手动构建:
- 添加手动触发器。
- 添加 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"];}
。