跳到主要内容

n8n 中的循环操作#

当需要处理多个项目或重复执行操作时(例如向通讯录中的每个联系人发送消息),循环功能非常实用。n8n 会自动处理这类重复性操作,这意味着您无需在工作流中特意构建循环。但存在部分节点不适用此规则。

在 n8n 中使用循环#

n8n 节点可接收任意数量的项目作为输入,处理这些项目后输出结果。您可以将每个项目视为单个数据点,或节点输出表中的单行数据。

客户数据存储节点输出

节点通常会对每个项目执行一次操作。例如,若要将客户数据存储节点中的客户姓名和备注作为 Slack 消息发送,您需要:

  1. 将 Slack 节点连接到客户数据存储节点
  2. 配置参数
  3. 执行节点

此时您将收到五条消息:每条对应一个项目。

通过这种方式即可处理多个项目,无需显式地以循环方式连接节点。

单次执行节点#

若需节点不处理所有接收的项目(例如仅向第一位客户发送 Slack 消息),可通过在该节点的设置标签页中切换单次执行参数来实现。当输入数据包含多个项目但只需处理首项时,此设置非常实用。

创建循环#

n8n 通常会自动处理所有输入项目的迭代操作,但在某些特定场景下需要手动创建循环来遍历所有项目。有关不会自动迭代所有输入项目的节点列表,请参阅节点例外说明

条件循环#

在 n8n 工作流中创建循环时,可将某节点的输出连接至前置节点的输入。添加 IF 节点来设定循环终止条件。

以下是通过 IF 节点实现循环的示例工作流

示例工作流的编辑器界面视图

全量项目循环#

当需要循环处理所有项目时,可使用逐项循环节点。若需单独处理每个项目,请将批次大小设为 1

您可以将数据分组批处理,这种方法适用于处理大规模输入数据时规避 API 速率限制,或需要处理特定返回项目组的情况。

逐项循环节点会在所有输入项目完成分批并传递至工作流下一节点后自动停止执行,因此无需额外添加 IF 节点来终止循环。

节点例外说明#

需要手动设计循环的节点与操作:

  • CrateDB:执行 insertupdate 时仅运行一次
  • 代码节点(全量单次运行模式):根据输入的代码段处理所有项目
  • 执行工作流节点(全量单次运行模式)
  • HTTP 请求:需自行处理分页。若 API 调用返回分页结果,必须创建循环逐页获取
  • Microsoft SQL:执行 insertupdatedelete 时仅运行一次
  • MongoDB:执行 insertupdate 时仅运行一次
  • QuestDB:执行 insert 时仅运行一次
  • Redis
    • 信息操作:无论输入数据包含多少项目,此操作仅执行一次
  • RSS 阅读:对请求的 URL 仅执行一次
  • TimescaleDB:执行 insertupdate 时仅运行一次