n8n 工作流
n8n 节点执行策略:executeOnce 与数据流
n8n 的节点执行逻辑和传统编程不同。理解 executeOnce 是掌握 n8n 工作流开发的关键。
核心概念:节点执行次数
n8n 的数据在节点间传递时以 items 为单位。当上游节点输出多个 items 时, 下游节点默认会对每个 item 执行一次。
示例
"Get All Users" 节点返回 10 个用户 → 下游的 "Create Task" 节点会执行 10 次
executeOnce 的作用
当你设置 executeOnce: true 时,节点只执行一次,不管上游传来多少 items。
这在你只需要"第一个"或"汇总"数据时非常有用。
配置示例
在节点设置中勾选 "Execute Once" 选项即可
数据引用语法
在 n8n 表达式中引用上游节点数据:
| 语法 | 含义 |
|---|---|
| $('NodeName').first().json.field | 取第一个 item 的字段 |
| $('NodeName').item.json.field | 取当前 item 的字段 |
| $('NodeName').all() | 获取所有 items |
链式连接
使用 .to() 方法链式连接节点,让代码更简洁。
实际工作流示例
创建一个 Asana 任务并通知 Slack:
- Get All Users (executeOnce: false) → 返回所有用户
- Extract Lysander ID (executeOnce: true) → 只取 Lysander
- Create Asana Task → 使用提取的 User ID 创建任务
- Send Slack Notification → 发送完成通知
调试技巧
- 双击节点查看输入/输出数据
- 使用
Code节点打印中间变量 - 开启 "Test workflow" 逐步执行,观察每个节点的数据变化