跳到主要内容

Loop Over Items(逐项循环)

Loop Over Items 节点用于在需要时循环处理数据。

节点保存原始输入数据,每次迭代通过 loop(循环)输出返回预设数量的数据。

节点执行完成后,会合并所有已处理的数据,并通过 done(完成)输出返回。

何时使用 Loop Over Items 节点 ​

默认情况下,n8n 节点设计为处理输入数据项列表,部分例外见下文。根据目标的不同,工作流通常无需 Loop Over Items 节点。n8n 处理多个数据项的更多信息,请参阅 n8n 中的循环。

以下链接介绍 Loop Over Items 节点的一些适用情况:

节点参数 ​

Batch Size(批次大小) ​

输入每次调用返回的数据项数量。

节点选项 ​

Reset(重置) ​

开启后,节点每次循环都会以当前输入数据重新初始化并重置。当希望 Loop Over Items 节点将传入数据视为一组新数据,而非之前数据项的延续时,使用此项。

例如,无法预先知道分页服务的页数时,可将 Loop Over Items 节点的重置选项与 If 节点配合使用。循环每次查询一页,执行所需处理,再增加页码。循环重置确保每次迭代都被识别为一组新数据。If 节点判断退出条件,决定是否继续下一次迭代。

注意

设置有效的终止条件

对于上述示例一类的工作流,为循环设置有效的终止条件至关重要。如果终止条件始终不满足,工作流执行会陷入无限循环。

启用后,可将参数表示方式从 Fixed(固定值)切换为 Expression(表达式),以调整重置条件。表达式的计算结果决定节点何时重置数据项处理。

模板与示例 ​

浏览 Loop Over Items (Split in Batches)(逐项循环) 集成模板,或搜索所有模板

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

此工作流使用 Loop Over Items 节点从两个不同来源读取 RSS 订阅源。由于 RSS Feed Read 节点只处理收到的第一个数据项,因此需要在工作流中使用 Loop Over Items 节点。也可在 n8n.io 找到此工作流。

本示例介绍工作流的构建过程,但假定你已熟悉 n8n。要构建第一个工作流并了解如何添加节点,请参阅动手试用。

最终工作流如下所示:

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

  1. 添加手动触发器。

  2. 添加 Code 节点。

  3. 将以下代码复制到 Code 节点:

    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. 选择 Execute Workflow(执行工作流),运行工作流以将数据加载到 RSS Feed Read 节点。

  8. 配置 RSS Feed Read:将输入中的 url 映射到 URL 字段。可从 INPUT(输入)面板拖放,也可使用表达式 {{ $json.url }}。

  9. 选择 Execute Workflow(执行工作流),运行工作流并查看结果数据。

检查节点是否已处理全部数据项 ​

要检查节点是否仍有待处理的数据项,请使用表达式 {{$("Loop Over Items").context["noItemsLeft"]}}。此表达式返回布尔值:仍有待处理数据时返回 false,否则返回 true。

获取节点当前运行索引 ​

要获取节点当前运行索引,请使用表达式 {{$("Loop Over Items").context["currentRunIndex"];}}。

本文为社区中文翻译。查看对应英文原文