别再被“如果”困住:你的第一个条件判断自动化
笔者在 N8N大学 的社区里,见过太多新手卡在同一个地方:明明知道自动化能省时省力,可一旦遇到“如果数据大于100就发邮件,否则只记录日志”这种需求,瞬间懵圈。
这就是 **If 节点** 的威力,也是新手的拦路虎。它不是简单的“是或否”,而是决定数据流向的十字路口。今天,笔者就带你拆解这个核心节点,从入门到精通,彻底搞懂 n8n 的逻辑分支。
If节点到底是什么?别把它想复杂了
在 n8n 的世界里,If 节点就是一个**交通指挥官**。它接收数据,根据你设定的条件进行判断,然后决定把数据发往“左边”还是“右边”(甚至更多分支)。
不同于传统代码里复杂的 `if-else` 嵌套,n8n 的 If 节点通过可视化的方式,让你一眼就能看清逻辑流向。它的核心在于:条件(Condition) 和 分支(Branch)。
实战入门:设置你的第一条判断逻辑
假设我们有一个场景:监控订单金额。如果金额大于 500 元,就发短信通知老板;如果小于等于 500 元,只记录到表格里。
步骤一:准备数据源
首先,我们需要数据。可以使用 Manual Trigger 手动触发,或者 Webhook 接收外部数据。为了演示,我们在 Set 节点里模拟一条订单数据:
- 变量名:
amount - 值:
600
步骤二:拖入 If 节点并配置条件
在画布上拖入 If 节点,连接上一步的 Set 节点。点击 If 节点,你会看到“条件”配置区。
这里有三种模式,我们先用最常用的 单条件(Single Condition):
- 字段(Field):输入
amount(即我们要判断的字段)。 - 运算符(Operator):选择
大于(Greater)。 - 值(Value):输入
500。
此时,If 节点逻辑变为:amount > 500。
步骤三:连接分支
这是关键一步。If 节点出来后,你会看到两个输出端口:
- True(真):当条件成立时(金额大于500)。
- False(假):当条件不成立时(金额小于等于500)。
分别连接两个不同的后续节点(例如 True 接 Telegram 发送通知,False 接 Airtable 记录数据)。
进阶技巧:多条件与嵌套逻辑
现实业务往往比“大于500”复杂得多。比如:金额大于500 且 订单状态为“已支付”才通知。
使用“与(AND)”和“或(OR)”
在 If 节点的条件设置中,点击 “添加条件(Add Condition)”,你会发现模式变成了 复合条件(Composite Condition)。
- AND(且):所有条件都必须满足。例如:字段A大于100 AND 字段B等于“status”。
- OR(或):满足任意一个条件即可。例如:字段A大于100 OR 字段B等于“VIP”。
笔者建议:尽量保持逻辑扁平。如果条件过于复杂(比如 AND 里面套 OR),考虑拆分成多个 If 节点串联,这样调试起来更容易。
精通实战:处理数组与复杂数据结构
进阶玩家会遇到一个问题:数据不是简单的键值对,而是一个数组(List)。比如:订单里包含多个商品,只要有一个商品是“生鲜”,就需要特殊处理。
这时候,单纯用 If 节点的简单判断就捉襟见肘了。你需要配合 Set 节点或 Code 节点预处理数据。
实战案例:遍历数组判断
假设输入数据是 JSON 对象,包含一个 products 数组:
{
"order_id": 123,
"products": [
{ "name": "电脑", "type": "electronics" },
{ "name": "苹果", "type": "fruit" }
]
}
操作步骤:
- 使用 Set 节点(或 Code 节点),利用 n8n 的表达式功能。我们可以使用
{{ $json.products.some(p => p.type === "fruit") }}这样的 JavaScript 表达式。 - 这个表达式会返回一个布尔值(true/false)。
- 将结果输出到一个新的字段,例如
has_fruit。 - 最后,将 If 节点的判断条件设置为:
has_fruit等于true。
这样,你就实现了对数组内部元素的逻辑判断。
避坑指南:新手最容易踩的 3 个坑
在 N8N大学 的过往教程中,关于 If 节点的报错咨询从未停止。以下是必须警惕的细节:
1. 数据类型陷阱
n8n 是强类型语言环境。如果你的字段是数字 500,但在 If 节点里写成了文本 "500",比较结果会是 false。
解决办法:善用表达式。在值的输入框中,如果数据是数字,尽量使用 {{ parseInt($json.amount) }} 强制转换类型,确保比较的一致性。
2. 时区与日期比较
比较日期时,如果你直接比较字符串格式(如 "2023-10-01"),结果往往不可靠。n8n 默认使用 UTC 时间。
解决办法:在比较前,利用 Code 节点将日期转换为时间戳(Timestamp)进行比较,或者统一使用 ISO 8601 格式。
3. 逻辑短路(Short Circuit)
在复杂的复合条件中,如果你使用了 OR 逻辑,一旦第一个条件成立,n8n 可能会立即判定为 True,不再验证后续条件。这在某些依赖副作用(如调用 API)的场景下可能导致意外。
建议:尽量将不依赖外部调用的简单判断放在最前面。
FAQ:关于 If 节点的常见疑问
Q1: If 节点可以支持正则表达式吗?
A: 可以。在运算符中选择 Matches Regex,即可输入正则规则对字符串进行高级匹配。例如验证邮箱格式或特定编码。
Q2: 如果我想做类似 Switch-Case 的多分支怎么办?
A: n8n 的 If 节点默认支持“单条件多分支”。你可以点击 "+ Add Branch" 添加更多的判断分支,不仅仅是 True/False,可以是 Condition 1, Condition 2, Condition 3...
Q3: 为什么我的 If 节点有时候不执行任何分支?
A: 这通常是因为数据中缺少判断字段,或者字段值为 null / undefined。请在 If 节点前加一个 Set 节点,给关键字段设置默认值。
总结与资源
If 节点是 n8n 自动化流程的“大脑”。掌握它,意味着你不再是单一执行者,而是能构建具备决策能力的智能流程。从简单的数值比较,到嵌套的业务逻辑,只要理解了数据流向,一切皆可自动化。
想深入学习更多 n8n 高级技巧?欢迎访问 N8N大学 (n8ndx.com),这里有更多实战案例和社区讨论等你加入。下次,我们聊聊 Loop 节点,看看如何处理批量任务。