n8n If节点:如何用三行逻辑搞定90%的自动化分支

2026-02-16 10 0

还在用复杂的逻辑嵌套?你的自动化流可能太臃肿了

笔者在 N8N大学 的后台经常收到这样的提问:“为什么我的 n8n 工作流看起来像盘丝洞?一个任务判断就要绕好几层,维护起来简直是噩梦。”

说实话,这在新手阶段非常常见。我们总是下意识地把逻辑写得面面俱到,却忽略了 n8n If 节点最核心的威力:**精准拦截,快速分流**。

今天这篇教程,笔者不跟你扯复杂的算法,只教你用最朴素的“三行逻辑”——其实是指三个关键的判断条件——来搞定 90% 的日常自动化分支。写好这一招,你的工作流能瞬间清爽一半。

核心实操:三步构建“智能分流器”

在 n8n 中,If 节点是工作流的交通枢纽。但大多数人的痛点在于:不知道该把判断条件写在哪里,以及怎么写才最省事。

下面,我们以一个常见的场景为例:**处理客户工单**。假设我们有一个 Webhook 接收数据,我们需要根据工单的“紧急程度”和“金额”自动分发给不同的处理渠道。

第一步:确定“唯一真值”——条件逻辑的基石

n8n 的 If 节点支持 AND/OR 逻辑,但为了保持逻辑清晰,笔者建议新手尽量使用 AND(与) 逻辑来构建主干,用 OR(或) 逻辑处理边缘情况。

在编辑器中拖入一个 If 节点。你会看到 Condition 的设置区域。这里的“三行逻辑”并非指代码行数,而是指你定义的三种核心判断路径:

  1. 高优先级路径:紧急程度 = High
  2. 中优先级路径:紧急程度 = Medium
  3. 低优先级路径:其他所有情况

If 节点的参数设置中,点击“Add Condition”,选择“String”(字符串)或“Number”(数字)类型。输入你的判断字段,例如 {{ $json.priority }}

第二步:配置“三行逻辑”——实战中的判断条件

这是最关键的一步。我们不写复杂的嵌套,只做清晰的平行分流。

路径 1:高价值/紧急工单(直接走人工)

If 节点中,设置第一个条件组:

  • 字段:{{ $json.priority }}
  • 操作符:== (等于)
  • 值:High

同时,为了更精准,我们可以再加一个 AND 条件,比如金额大于 5000 元。这样,只有“既紧急又高价值”的工单才会触发这个分支。

路径 2:常规工单(走自动化处理)

点击下方的“Add Condition Group”,设置第二个条件组:

  • 字段:{{ $json.priority }}
  • 操作符:==
  • 值:Medium

这个分支连接一个自动回复节点或数据库记录节点。

路径 3:兜底逻辑(Else 分支)

这就是 n8n 最好用的“默认出口”。当你配置完上述条件后,If 节点会自动出现一个没有连接条件的出口(通常标记为灰色或“Else”)。

这就是你的“三行逻辑”中的最后一行:**如果以上都不满足,则归档或发送通知**。无需额外配置复杂的 NOT 逻辑,直接利用默认出口即可。

第三步:连接与测试——验证逻辑的正确性

配置完逻辑后,记得把各个出口连接到对应的节点。比如:

  • True 出口 → HTTP Request (发送给 Slack 警报)
  • False 出口 → Google Sheets (记录到表格)
  • 默认出口 → Email (发送归档通知)

点击“执行工作流”,在 If 节点上查看 Output。n8n 会清晰地告诉你数据流向了哪个出口(True, False, 或 Else)。这是调试逻辑最快的方法,不要跳过这一步。

避坑指南:90% 的人在这里翻车

虽然 If 节点看似简单,但有两个细节是新手最容易忽略的“隐形杀手”。

1. 数据类型的“陷阱”

这是最常见的报错原因。如果你的判断字段是数字(比如金额 100),但你在 If 节点里选了“String”类型并填了 100(带引号),n8n 会认为这是字符串 "100",导致判断失败。

避坑技巧:永远在 If 节点之前加一个 Set 节点或 Edit Fields 节点,强制转换数据类型。或者在 If 节点中,根据数据的实际类型选择 Number、Boolean 或 String。

2. 逻辑优先级的混乱

当你添加多个 Condition Group(条件组)时,n8n 是从上到下执行的。虽然 If 节点通常是并行判断,但在某些复杂的嵌套逻辑中,顺序会影响你的思考路径。

避坑技巧:遵循“先严后宽”的原则。先判断最严格的条件(如 Priority = High AND Amount > 5000),再判断较宽泛的条件(如 Priority = Medium)。这样能确保高价值数据不会漏网。

进阶技巧:让逻辑更“聪明”

当你掌握了基础的三行逻辑,N8N大学 建议你尝试以下优化,让你的自动化流具备“容错性”。

使用表达式微调判断

不要只做简单的等于判断。利用 n8n 的表达式能力,可以做更灵活的处理。例如:

  • 模糊匹配:判断邮件内容是否包含特定关键词。
    {{ $json.body.includes("投诉") }}
  • 范围判断:判断数值是否在某个区间。
    {{ $json.score > 60 && $json.score < 80 }}

合并出口减少节点

如果你的“False”出口和“Else”出口处理的逻辑是一样的,不要浪费节点。你可以将逻辑合并,只保留一个出口连接后续流程,或者使用 Switch 节点替代 If 节点(当分支超过 3 个时,Switch 更清晰)。

FAQ:关于 n8n If 节点的常见疑问

Q1: If 节点里的 AND 和 OR 有什么区别?

A: 简单来说,AND 要求所有条件同时满足(例如:既是 VIP 又是今天生日),OR 只要满足其中一个条件即可(例如:来自北京 或 来自上海)。在构建主干逻辑时,笔者建议多用 AND,少用 OR,这样逻辑更严谨。

Q2: 为什么我的 If 节点总是进 False 出口?

A: 90% 的情况是数据类型不匹配,或者字段路径写错了。请检查你的输入数据(在上一个节点的 Output 中查看),确认字段名是否完全一致(包括大小写)。如果不确定,可以使用 JSON 输出模式来查看原始数据。

Q3: If 节点能处理复杂的数学运算吗?

A: 可以。你可以在 Condition 的“Value”中直接写表达式,比如 {{ $json.price * 0.8 }} 来计算折扣后的价格是否小于 100。但为了维护方便,建议先用 Function 节点或 Set 节点算好结果,再传给 If 节点判断。

总结与资源

掌握 If 节点的核心不在于写多少行代码,而在于理清数据的流向。记住这“三行逻辑”:**高优拦截、常规分流、默认兜底**,你就能处理绝大多数业务场景。

如果你在实操中遇到报错,或者有更复杂的分支逻辑想探讨,欢迎来到 N8N大学 的社区交流。自动化是一场马拉松,我们不求一步到位,但求步步为营。

相关文章

n8n Error Handling 节点报错太心烦?试试这些更灵活的替代方案
n8n 节点报错了?用 Error Handling 让它自动重试并通知你
n8n Wait节点在数据同步中的延迟控制实战
n8n Wait节点免费版:我能用它实现定时任务吗?
n8n Error Handling节点:当自动化流程“翻车”时,如何让它自动“扶起来”?
n8n Error Handling节点报错常见问题解决

发布评论