遍历项目#
Loop Over Items节点可在需要时帮助您循环遍历数据。
该节点保存原始传入数据,并在每次迭代时通过loop输出返回预定义数量的数据。
当节点执行完成后,它会将所有处理过的数据合并并通过done输出返回。
何时使用Loop Over Items节点#
默认情况下,n8n节点设计用于处理输入项列表(部分例外情况如下所述)。根据您的目标需求,工作流中通常不需要使用"遍历项目"节点。您可以在n8n循环机制页面了解更多关于n8n如何处理多项目的信息。
以下链接展示了循环处理项节点可能派上用场的一些场景:
- 循环直至所有项目处理完毕: 说明Loop Over Items节点与常规项目处理的区别,以及何时可能需要使用该节点。
- Node exceptions: 概述了可能需要使用Loop Over Items节点手动构建循环逻辑的特定情况和节点。
- Avoiding rate limiting: 演示如何批量处理API请求以避免其他服务的速率限制。
节点参数#
批量大小#
输入每次调用返回的项目数量。
节点选项#
重置#
如果开启此选项,节点将在每次循环时重置,并使用当前输入数据重新初始化。当您希望"循环处理项"节点将传入数据视为新数据集而非之前项的延续时,请使用此功能。
例如,您可以将带重置选项的Loop Over Items节点与If节点结合使用,在预先不知道需要多少页的情况下查询分页服务。该循环会逐页查询数据,执行任何处理操作,并递增页码。循环重置功能确保循环将每次迭代识别为新数据集。If节点通过评估退出条件来决定是否执行下一次迭代。
包含有效的终止条件
对于上述示例中描述的工作流,为循环设置有效的终止条件至关重要。如果终止条件始终不匹配,您的工作流执行将陷入无限循环。
启用后,您可以通过将参数表示从固定值切换为表达式来调整重置条件。表达式评估的结果将决定节点何时重置项目处理。
模板和示例#
从两个不同来源读取RSS订阅源#
该工作流允许您使用循环遍历项节点从两个不同来源读取RSS订阅源。您需要在工作流中添加循环遍历项节点,因为RSS订阅源读取节点仅处理接收到的第一项内容。您也可以在n8n.io上找到此工作流。
本示例将引导您完成构建工作流的步骤,但假设您已熟悉n8n。如需构建您的第一个工作流(包括学习如何向工作流添加节点),请参阅立即试用。
最终的工作流程如下所示:
复制上方的工作流文件并粘贴到您的实例中,或按照以下步骤手动构建:
- 添加手动触发器。
- 添加代码节点。
- 将以下代码复制到代码节点中:
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节点。
- 配置循环遍历项:在批量大小字段中将批量大小设置为
1。 - 添加 RSS 阅读节点。
- 选择测试工作流。这将运行工作流以将数据加载到RSS Feed Read节点中。
- 配置RSS订阅源读取:将输入中的
url映射到URL字段。您可以通过从INPUT面板拖放,或使用此表达式实现:{{ $json.url }}。 - 选择测试工作流来运行工作流并查看结果数据。
检查节点是否已处理所有项目#
要检查节点是否仍有待处理的项目,请使用以下表达式:{{$node["Loop Over Items"].context["noItemsLeft"]}}。该表达式返回布尔值。如果节点仍有数据需要处理,表达式返回false,否则返回true。
获取节点当前运行的索引#
要获取节点的当前运行索引,请使用以下表达式:{{$node["Loop Over Items"].context["currentRunIndex"];}}。