如果说工作流是菜单,那么节点就是构成菜单的各式厨具和食材。n8n 提供了数百种节点,但我们日常使用最高频、最核心的,其实就是那么几类。掌握了它们,你就掌握了 n8n 80% 的功力。
本章将聚焦于那些你必须熟练掌握的“关键乐高”,并将它们分为四大类:**触发器系列、数据处理系列、逻辑控制系列**,以及无所不能的**“瑞士军刀”**。
—
### 3.1 触发器系列:定义工作流的起点
触发器决定了工作流“何时”与“如何”启动。一个工作流有且仅有一个触发器。
* **`Manual` / `Start` (手动触发)**
* **作用**:最基础的触发器,只有当你手动点击“Execute Workflow”时,工作流才会执行。
* **应用场景**:非常适合开发、测试和调试工作流的阶段。
* **`Cron` (定时触发)**
* **作用**:按预设的时间表(如每小时、每天、每周一)自动执行工作流。
* **应用场景**:任何需要周期性执行的任务,如每日生成报表、每小时检查一次库存、每周发送周报等。
* **`Webhook` (网络钩子触发)**
* **作用**:生成一个唯一的 URL。任何外部应用或服务只要向这个 URL 发送一个 HTTP 请求,就能立即触发该工作流。这是 n8n 连接外部世界的“实时大门”。
* **应用场景**:
* 当你的网站有新用户注册时,由后端服务调用 Webhook URL,触发 n8n 发送欢迎邮件。
* 当你的在线表单(如 Typeform, 金数据)有新提交时,通过其 Webhook 功能实时通知 n8n。
* 接收来自 GitHub, GitLab 的代码提交、CI/CD 状态变更等通知。
* **安全最佳实践**:公开的 Webhook URL 可能会被恶意调用。在生产环境中,请务必在 `Webhook` 节点的设置中,选择一个 `Authentication` 方式(如 `Header Auth`),并要求调用方在请求头中提供一个预设的密钥,确保只有合法的请求才能触发工作流。
—
### 3.2 数据处理系列:塑造你的数据流
数据在工作流中流动时,很少是完全符合我们下游需求的。数据处理节点就是用来对数据进行清洗、转换、增删和重组的工具。
* **`Set` (设置)**
* **作用**:这是最重要、最高频的数据处理节点。它能创建新的字段,或修改已有字段的值。在第二章中,我们已经用它从复杂的 API 响应中提取并重命名了我们需要的字段。
* **核心功能**:
* **新增字段**:`Add Value` 添加一个新的键值对。
* **修改字段**:`Add Value` 时,如果 `Name` 与上游数据中的某个字段名相同,则会覆盖它的值。
* **数据清洗**:通过 `Keep Only Set` 选项,可以只保留 `Set` 节点中设置的字段,丢弃所有其他无关数据,保持数据流的干净。
* **`Function` (函数)**
* **作用**:一个迷你版的 `Code` 节点。它允许你用简单的 JavaScript 代码来处理**每一个**流入的数据项 (Item)。
* **应用场景**:当你需要进行一些 `Set` 节点难以实现的、略微复杂的计算或转换时。例如,将所有商品价格都打个八折,或者将用户的姓名从“Zhang, San”格式转换为“San Zhang”。
* **示例**:假设上游数据有一个 `price` 字段,你想给它增加 10% 的税。
“`javascript
// item 是 n8n 传入的单个数据项对象
item.taxed_price = item.price * 1.1;
return item;
“`
* **`Edit Fields` (编辑字段)**
* **作用**:专门用于对字段进行“管家式”操作:**重命名、删除、排序**。
* **与 `Set` 的区别**:`Set` 侧重于“值”的改变,而 `Edit Fields` 侧重于“键”和“结构”的改变。当你只是想把字段 `firstName` 改名为 `first_name`,或者删除一个名为 `password` 的敏感字段时,用 `Edit Fields` 更直观、更方便。
—
### 3.3 逻辑控制系列:指挥数据的走向
逻辑控制节点是工作流的“交通警察”,它们根据设定的条件,决定数据应该流向哪个分支,或者如何被拆分和合并。
* **`IF` (如果)**
* **作用**:进行一次简单的“是”或“否”的判断。它只有一个条件输入框,根据条件是否成立,数据会从 `true` (真) 或 `false` (假) 两个输出端口流出。
* **应用场景**:
* 如果订单金额大于 100 元,则从 `true` 出口流出,执行包邮逻辑。
* 如果邮件标题包含“紧急”,则从 `true` 出口流出,执行发送短信通知的逻辑。
* **`Switch` (开关)**
* **作用**:`IF` 节点的“超级升级版”。它可以根据一个输入值,设置**多条**路由规则,将数据分发到不同的输出端口。
* **应用场景**:当有多种情况需要处理时,用 `Switch` 能让工作流更清晰、更扁平,避免出现一长串的 `IF` 节点嵌套。
* 根据客户的会员等级(`gold`, `silver`, `bronze`),将他们分发到三个不同的分支,执行不同的营销活动。
* 根据收到的 Webhook 事件类型(`issue.created`, `issue.commented`, `issue.closed`),执行不同的处理逻辑。
* **`Split in Batches` (分批处理)**
* **作用**:这是处理大量数据时**必须掌握**的关键节点。它能将一个包含 N 个数据项的数组,拆分成多个包含 M 个数据项的小“批次”。
* **应用场景**:
* **API 速率限制**:很多 API 限制每秒/每分钟的请求次数。当你需要为 1000 个用户调用 API 时,直接循环 1000 次很可能会被封禁。使用 `Split in Batches` 将其拆分为每批 10 个,然后每批之间等待 1 秒,就能完美规避限制。
* **内存管理**:一次性将成千上万条数据加载到内存中可能会导致 n8n 实例崩溃。分批处理可以显著降低单次执行的内存消耗。
—
### 3.4 “瑞士军刀”:`Code` 节点
* **作用**:`Code` 节点是 n8n 的终极大杀器,它为你提供了一个完整的 Node.js 运行环境。你可以在里面编写任意复杂的 JavaScript/TypeScript 代码,引入 npm 包,执行文件操作等。它能做到其他所有节点能做到的事情,以及它们做不到的事情。
* **与 `Function` 节点的区别**:
* `Function` 节点是**逐项处理**,代码对每个 Item 执行一次。
* `Code` 节点是**批量处理**,它一次性接收所有上游传入的 Items,由你来决定如何处理这个数组。这给了你更高的自由度,比如可以对所有数据进行汇总计算。
* **应用场景**:
* 需要引入外部 npm 库(如 `lodash`, `dayjs`)进行复杂的数据处理。
* 需要与一个没有现成 n8n 节点的、认证方式非常奇特的 API 进行交互。
* 需要执行一些本地文件读写或复杂的业务逻辑计算。
**使用原则**:始终优先使用内置的普通节点。只有当普通节点无法满足你的需求,或者用普通节点组合起来的流程过于繁琐时,才考虑使用 `Code` 节点。它是你的“最后手段”,也是你的“无限可能”。













暂无评论内容