n8n If节点条件逻辑分支使用教程:如何用条件判断实现自动化流程的精准分流

2026-02-15 10 0

别让自动化流程“一条路走到黑”

笔者在 N8N大学 社区里见过太多这样的场景:大家兴冲冲地把流程跑通了,结果发现数据一多就乱套。比如,订单来了想自动发邮件,结果退款订单也收到了促销邮件;或者想给 VIP 用户优先处理,结果系统对所有人都一视同仁。

这就是缺乏“判断力”的后果。如果把 n8n 流程比作一条高速公路,If 节点就是那个关键的匝道分流站。没有它,所有车辆(数据)只能挤在一条道上,要么堵死,要么开错方向。

今天这篇教程,笔者就带大家硬核拆解 n8n 的 If 节点。我们不讲枯燥的代码,只聊怎么用大白话的逻辑,让你的自动化流程学会“看人下菜碟”,实现精准分流。

准备工作:手里有粮,心中不慌

在开始搭建分流系统之前,我们需要准备一个基础的 n8n 环境。如果你还没安装,建议先去 N8N大学 看看 Docker 部署教程,三分钟就能搞定。

  • n8n 实例:本地或云端均可,推荐 Docker 部署。
  • 测试数据源:为了演示,我们可以用 Manual Trigger 手动触发,或者用 Set 节点模拟一些 JSON 数据。
  • 理解基本概念:你需要知道什么是“真 (True)”和“假 (False)”,这是 If 节点的唯一判断标准。

核心实操:三步搭建智能分流器

下面,我们模拟一个真实的业务场景:**用户提交工单,如果是 VIP 用户,则优先发送给技术总监;如果是普通用户,则发送给客服组。**

第一步:构建模拟数据流

首先,我们需要一个数据源。在画布上拖入一个 Set 节点(或者用 Manual Trigger 配合 Set)。

点击 Set 节点,配置如下 JSON 数据,模拟两个不同类型的用户:

Key: userData
Value:

{
  "name": "张三",
  "level": "VIP",
  "issue": "服务器宕机"
}

你可以再加一步,或者直接复制这个 JSON 结构。重点是,我们要让数据流进入下一个节点时,携带 level 这个字段。

第二步:配置 If 节点(分流核心)

这是今天的主角。在 Set 节点后面拖入一个 If 节点。

点击 If 节点,你会看到 Condition Rules(条件规则)。n8n 的 If 节点非常强大,支持多条件组合。我们用最简单的“单条件”来演示:

  1. 选择字段路径:点击左侧下拉框,输入 level(或者从下拉列表中选择)。这代表我们要判断数据里的“等级”字段。
  2. 选择运算符:n8n 提供了丰富的运算符。这里我们选择 String: equals(字符串等于)。
  3. 输入比较值:在右侧输入框填入 VIP

配置完成后,If 节点的逻辑变成了:如果数据里的 level 字段等于 VIP,则走“真 (True)”出口;否则,走“假 (False)”出口。

第三步:连接下游节点与测试

现在,从 If 节点右侧拉出两根连线:

  • True 出口:连接一个 Email 节点(或 HTTP Request),设置收件人为“技术总监”,标题为“VIP 紧急工单”。
  • False 出口:连接另一个 Email 节点,设置收件人为“客服组”,标题为“普通工单”。

点击右上角的 Execute Workflow(执行工作流)。观察运行数据:

  • 如果数据是 VIP,你会看到只有 True 路径的节点变绿(执行成功)。
  • 如果修改 Set 节点的数据为 "level": "Normal" 再次执行,False 路径的节点则会变绿。

这就是 n8n If 节点最基础也最核心的分流能力。

避坑指南:这些细节决定成败

在 N8N大学 的实战经验中,If 节点虽然简单,但新手最容易在以下两个地方翻车:

  1. 数据类型不匹配(隐形巨坑)
    如果你的数据源来自 API,返回的 level 字段可能是 "1"(字符串),而你配置 If 节点时想判断 1(数字)。n8n 的严格模式下,String "1" 不等于 Number 1
    解决办法:在 If 节点之前加一个 Set 节点,强制转换数据类型,或者在 If 节点里使用 Exists 或模糊匹配。
  2. 逻辑联结符的误用
    当你设置多条规则时,默认是 AND(且)。比如:用户是 VIP 金额大于 1000。如果你希望满足任一条件即可,请务必切换为 OR(或)。

进阶玩法:让分流逻辑更灵活

掌握了基础分流,我们来看看 n8n If 节点的进阶能力,这能让你的自动化流程更具弹性。

多条件组合分流

现实业务往往不是非黑即白。比如:VIP 用户且金额大于 5000 走 A 路径,普通用户且金额大于 1000 走 B 路径,其余走 C 路径。

在 n8n 中,你可以通过串联多个 If 节点来实现。第一个 If 节点判断是否为 VIP,True 走一边;False 的数据流继续进入第二个 If 节点判断金额。这种“管道式”过滤非常清晰。

利用 JavaScript 表达式实现复杂逻辑

If 节点的运算符有时不够用?点击运算符下拉框最底部的 Expression(表达式),你可以直接写 JavaScript 代码。

例如,判断用户是否在“上海”或“北京”:

$json.city === "上海" || $json.city === "北京"

如果表达式返回 true,则走真出口。这种方式给了你无限的可能,比如正则匹配、数组包含判断等。

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

Q1: If 节点报错提示 “Cannot read property ‘x’ of undefined” 怎么办?
A: 这通常是因为你的数据流中缺少判断所需的字段。建议在 If 节点前加一个 IF 判断:如果字段存在再执行,或者在 If 节点表达式中使用可选链操作符 $json?.x

Q2: 我想判断数组里是否包含某个值,该怎么配?
A: 这时候 Expression 是最好的选择。假设字段是 tags 数组,判断是否包含 "urgent":使用 $json.tags.includes('urgent')

Q3: If 节点的“True”和“False”出口可以连接同一个节点吗?
A: 技术上可以,但逻辑上不推荐。这会导致无论条件真假都会触发该节点,失去了分流的意义。请确保两个出口连接不同的处理逻辑。

总结与资源

If 节点是 n8n 自动化流程中的“大脑”。它让死板的流程拥有了处理复杂业务逻辑的能力。记住,优秀的自动化不是代码写得有多花哨,而是逻辑分叉是否清晰、容错性是否足够。

如果你想深入学习更多 n8n 的高级用法,欢迎访问 N8N大学 (n8ndx.com)。这里有更多硬核的实战教程和社区避坑指南,助你从自动化小白进阶为效率大师。

相关文章

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

发布评论