Skip to content

n8n 中的循环功能#

当您需要处理多个项目或重复执行某个操作时(例如向通讯录中的每个联系人发送消息),循环功能非常有用。n8n 会自动处理这种重复性操作,这意味着您无需特意在工作流中构建循环结构。不过某些节点例外。

在 n8n 中使用循环#

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

客户数据存储节点输出

节点通常会对每个项目运行一次。例如,如果您想通过 Slack 发送客户数据存储节点中客户的姓名和备注信息,您可以:

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

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

这就是无需显式连接循环节点即可处理多个项目的方式。

单次执行节点#

在某些情况下,您可能不希望节点处理所有接收到的项目(例如仅向第一位客户发送 Slack 消息),您可以通过在该节点的设置选项卡中切换单次执行参数来实现。当传入数据包含多个项目但您只想处理第一个时,此设置非常有用。

创建循环#

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

循环直到满足条件#

要在 n8n 工作流中创建循环,请将一个节点的输出连接到前一个节点的输入。添加 IF 节点来检查何时停止循环。

这里是一个使用 IF 节点实现循环的示例工作流:

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

循环直到所有项目处理完成#

当您需要循环处理所有项目时,请使用 Loop Over Items 节点。若要单独处理每个项目,请将 Batch Size 设置为 1

您可以将数据分组批量处理。这种方法适用于处理大量传入数据时避免 API 速率限制,或者当您需要处理特定组的返回项目时。

Loop Over Items 节点会在所有传入项目被分成批次并传递给工作流中的下一个节点后停止执行,因此不需要添加 IF 节点来停止循环。

节点例外情况#

以下节点和操作需要您在工作流中设计循环逻辑:

  • CrateDB 在执行 insertupdate 操作时只运行一次。
  • Code 节点在 Run Once for All Items 模式下:根据输入的代码片段处理所有数据项。
  • Execute Workflow 节点在 Run Once for All Items 模式下运行。
  • HTTP Request:您需要自行处理分页。如果 API 调用返回分页结果,您必须创建循环来逐页获取数据。
  • Microsoft SQL 在执行 insertupdatedelete 操作时只运行一次。
  • MongoDB 在执行 insertupdate 操作时只运行一次。
  • QuestDB 在执行 insert 操作时只运行一次。
  • Redis
    • 说明:此操作仅执行一次,不受传入数据项数量的影响。
  • RSS Read 对请求的 URL 只执行一次读取操作。
  • TimescaleDB 在执行 insertupdate 操作时只运行一次。