还在用多个 IF 节点硬凑逻辑?Switch 节点才是 n8n 的“交通指挥官”
在 N8N 大学,我们见过太多新手的 Workflow 里塞满了密密麻麻的 IF 节点。左边连一个,右边连一个,像蜘蛛网一样乱麻。
笔者曾经也这么干过。直到有一天,老板突然说:“如果订单金额大于 1000 且是 VIP 用户,走特殊审批;如果小于 1000 但不是新用户,走常规流程;如果是新用户,先发优惠券……”
这时候,如果你还在用 IF 节点连连看,代码量会瞬间爆炸,维护起来简直是噩梦。
今天,N8N 大学就带你彻底搞懂 Switch 节点。它是 n8n 中处理多路分流的神器,能让你的逻辑从“面条代码”变成清晰的“高速公路网”。
Switch 节点 vs IF 节点:什么时候该用谁?
很多同学分不清 IF 和 Switch 的区别,其实很简单:
- IF 节点:像一个二极管,只有“是”或“否”两条路。它适合处理简单的二元判断。
- Switch 节点:像一个多路继电器,根据一个变量的值,决定电流流向哪一条线路。它适合处理多种可能性的分类。
举个例子:判断订单状态。
- 用 IF:先判断是不是“已支付”,如果不是,再连一个 IF 判断是不是“已取消”……这叫“连连看”。
- 用 Switch:直接读取“状态”字段,自动分流到“已支付”、“已取消”、“待发货”、“已完成”四条线路。这叫“分拣机”。
实战一:从简单的 if-else 进阶到多路分流
假设我们有一个场景:处理用户提交的工单。我们需要根据工单的“优先级”(高、中、低)来决定发送给哪位客服处理。
步骤 1:准备数据
在 n8n 中,我们通常先用一个 Webhook 节点接收数据,或者用 Set 节点模拟数据。为了让演示更直观,笔者建议用 Set 节点。
在 Set 节点中,设置一个字段,比如 priority,值设为 high、medium 或 low。
步骤 2:配置 Switch 节点
拖入一个 Switch 节点,连接在数据源之后。关键参数设置如下:
- Rules:点击“Add Rule”,你会看到一个下拉框。默认是
AND,但我们不需要,因为我们只判断一个字段。 - Conditions:
- 第一条:选择字段
priority-> 操作符==-> 值high - 第二条:选择字段
priority-> 操作符==-> 值medium - 第三条:选择字段
priority-> 操作符==-> 值low
- 第一条:选择字段
配置好后,Switch 节点会自动生成对应的输出端口:Output 1 (high), Output 2 (medium), Output 3 (low)。
步骤 3:处理“未匹配”的情况
Switch 节点还有一个 Output 0(默认输出)。如果传入的数据既不是 high 也不是 medium 也不是 low(比如传了个 null 或者 typo),数据就会走这条线。这就像一个 catch-all 的兜底机制,非常关键。
实战二:复杂路由——如何处理“多条件组合”?
刚才我们处理的是单值匹配。但如果需求更复杂呢?比如:“优先级是高”AND“渠道是企业微信”,才走特殊通道。
在 Switch 节点的 Rules 设置中,我们可以添加多个条件,中间用 AND 或 OR 连接。
但这里有一个 N8N 大学的实战技巧:**不要试图在一个 Switch 节点里解决所有问题**。
如果逻辑太复杂(比如涉及日期计算、正则匹配),建议先用一个 Set 节点处理好逻辑,生成一个新的字段(例如 flow_type),然后让 Switch 节点只根据这个字段做简单的分流。这样能让你的 Workflow 可读性提升 10 倍。
进阶技巧:利用 Map 函数进行模糊匹配
Switch 节点的条件操作符非常丰富,除了 ==,还有:
contains:包含(适合数组或字符串)regex:正则匹配(适合复杂的文本规则)exists:字段是否存在
比如你想把所有包含“投诉”二字的工单都归类为“高危”,只需在条件中设置:字段 content,操作符 contains,值 投诉。
Switch 节点的常见“坑”与解决方案
在 N8N 大学的教学中,Switch 节点虽然好用,但也有几个常见的“坑”:
坑 1:数据类型不匹配
这是最令人头疼的问题。前端传来的 JSON 中,数字可能是字符串形式(如 "100"),而你在 Switch 里写的是数字 100。
解决方案:在 Switch 节点前加一个 Set 节点,利用 n8n 的表达式强制转换类型。例如使用 {{ parseInt($json.id) }} 确保比较的是数字。
坑 2:Output 0 的误用
很多同学配置了 3 个规则,却忘了 Output 0 还连着东西,导致所有数据都流向了“默认”路径,或者反过来,把 Output 0 当作错误处理,结果正常数据也进去了。
解决方案:明确命名你的输出端口。在 Switch 节点设置中,你可以双击端口名称(Output 1, Output 2...)进行重命名,比如改为“走高危流程”、“走普通流程”。
坑 3:逻辑顺序问题
Switch 节点是按顺序执行的。如果你第一条规则是 priority == high,第二条是 priority contains h,那么当数据是 high 时,它只会触发第一条,不会继续往下走。
解决方案:把范围更广、更宽泛的条件放在后面,更精确的条件放在前面。
FAQ:关于 Switch 节点的常见问题
Q1:Switch 节点可以处理“或”的逻辑吗?
A:可以。在同一条规则内,你可以添加多个条件,并选择“OR”连接。例如:(字段 A == 1) OR (字段 B == 2)。
Q2:Switch 节点输出后,如何重新汇合数据流?
A:在 n8n 中,你可以使用 Merge 节点。将所有分支流程处理完后,都连接到同一个 Merge 节点,它能将多条支路的数据重新汇聚成一条主路。
Q3:Switch 节点支持数组遍历吗?
A:本身不支持直接遍历。如果你需要对数组里的每个元素进行分流,建议先用 Split Out 节点把数组拆分成单条数据,然后再进入 Switch 节点处理。
总结与资源
Switch 节点是 n8n 流程设计的灵魂之一。它帮你摆脱了层层嵌套的 IF 炼狱,让数据流向清晰可见。
核心要点回顾:
- 多路分流用 Switch,简单二选一用 IF。
- 善用 Output 0 做兜底,避免数据丢失。
- 复杂逻辑前置处理,Switch 只负责“指路”。
如果你觉得这篇文章帮你理清了思路,欢迎访问 N8N大学 (n8ndx.com) 获取更多低代码实战干货。在 n8n 的世界里,逻辑越清晰,自动化越强大。