循环
当你需要处理多个数据项或重复执行某个操作时(例如向通讯录中的每位联系人发送消息),循环非常有用。n8n 会自动处理这种重复性操作,这意味着在大多数情况下,你无需在工作流中显式构建循环。但也存在少数例外节点。
在 n8n 中使用循环
n8n 节点接受任意数量的数据项作为输入,处理后输出结果。你可以将每个数据项理解为一个单独的数据点,或节点输出表中的一行数据。

节点通常对每个数据项运行一次。例如,如果你想将客户数据存储节点(Customer Datastore)中每位客户的姓名和备注以消息形式发送到 Slack,你只需:
- 将 Slack 节点连接到 Customer Datastore 节点。
- 配置参数。
- 执行节点。
你将收到五条消息,每个数据项对应一条。
这就是 n8n 实现批量处理多个数据项的方式,无需显式地将节点连接成循环结构。
让节点只执行一次
创建循环
n8n 通常会自动遍历所有传入数据项,但在某些特定场景下,你需要手动创建循环来遍历所有数据项。具体哪些节点不会自动遍历所有传入数据项,请参阅「节点例外列表」。
循环直到满足条件
要在 n8n 工作流中创建循环,将一个节点的输出连接到前一个节点的输入。添加一个 IF 节点来判断何时停止循环。
这是一个使用 IF 节点实现循环的示例工作流:

循环直到所有数据项处理完毕
当你希望循环直到所有数据项都处理完毕时,使用 Loop Over Items 节点。要逐个处理每个数据项,将 批次大小(Batch Size) 设置为 1。
你还可以将数据分批处理。当处理大量传入数据或需要处理特定批次的返回数据时,这种方式有助于避免触发 API 速率限制。
当所有传入数据项都被分批传递给工作流中的下一个节点后,Loop Over Items 节点会自动停止执行,因此无需额外添加 IF 节点来停止循环。
节点例外
以下节点和操作需要在工作流中手动设计循环:
- CrateDB:
insert和update操作只执行一次。 - Code 节点(对所有数据项运行一次模式):根据输入的代码片段处理所有数据项。
- Execute Workflow 节点(对所有数据项运行一次模式)。
- HTTP Request:需自行处理分页逻辑。如果 API 调用返回分页结果,必须创建循环来逐页获取数据。
- Microsoft SQL:
insert、update和delete操作只执行一次。 - MongoDB:
insert和update操作只执行一次。 - QuestDB:
insert操作只执行一次。 - Redis:
- Info(信息):无论传入数据包含多少项,此操作都只执行一次。
- RSS Read:对所请求的 URL 只执行一次。
- TimescaleDB:
insert和update操作只执行一次。