首页 n8n教程 n8n中的变量和表达式如何使用?能提升哪些工作流功能?

n8n中的变量和表达式如何使用?能提升哪些工作流功能?

作者: Dr.n8n 更新时间:2025-12-02 23:00:43 分类:n8n教程

为什么你的 n8n 工作流总在“读数据”这一步卡壳?

你是否也遇到过这种情况:Webhook 成功触发,日志显示数据已接收,但下一个节点却死活拿不到 user.name 或 order.id?别急着重启服务——90% 的问题根源,在于你还没真正搞懂 n8n 的变量和表达式系统。我是 Dr. n8n,曾帮一家跨境电商用这套机制把客服响应速度从 4 小时压缩到 7 分钟。今天,我就带你从“报错现场”一路拆解到“高手操作”,让你的工作流从此告别“空值地狱”。

变量不是“占位符”,而是工作流的“神经突触”

很多新手把变量当成 Excel 里的单元格引用,这是致命误解。在 n8n 里,变量是动态穿梭于节点之间的“数据信使”。每个节点执行后,都会把输出数据封装成一个叫 $json 的对象(想象成快递包裹),而表达式就是你写在包裹上的“取件码”。

实战案例:我在为某 SaaS 客户搭建用户注册自动化时,发现他们总在“发送欢迎邮件”节点失败。原因?前端传来的 JSON 是 {"user": {"profile": {"email": "xxx"}}},但他们写的表达式却是 {{$node["Webhook"].json["email"]}} —— 这就像去快递柜输错了取件码,当然取不到!

表达式语法:像搭乐高一样组装你的数据逻辑

n8n 表达式基于 JavaScript 语法,但你不需要成为程序员。记住三个核心符号就够了:

  • $json:当前节点的输出数据(最常用)
  • $node["节点名"]:跨节点调用历史数据
  • $now$today:内置时间变量

举个生活化类比:表达式就像咖啡机的操作面板。$json 是你刚磨好的咖啡豆,$node["研磨机"] 是之前步骤的成果,而 $today 就是自动加的糖包——你只需按顺序组合按钮,就能得到定制饮品。

// 正确路径:三层嵌套对象
{{$node["Webhook"].json["user"]["profile"]["email"]}}

// 动态拼接:生成带日期的订单号
Order_{{$now.toISOString().slice(0,10)}}_{{$json.orderId}}

// 条件判断:VIP 用户打标签
{{$json.user.level === 'VIP' ? '优先处理' : '普通队列'}}

变量如何让工作流“活”起来?三大实战场景

场景传统做法变量加持后
动态路由写死 API 地址https://api.{{$json.region}}.com/v1/data
智能过滤人工设置阈值{{$json.amount > 1000 ? '财务审核' : '自动放行'}}
个性化通知群发模板消息尊敬的 {{$json.name}},您的订单 {{$json.id}} 已发货

避坑指南:Dr.n8n 的血泪经验总结

  1. 路径校验三板斧:先用 Debug 节点打印 $json,再用表达式编辑器的“自动补全”,最后加个 IF 节点做空值兜底
  2. 命名即文档:给节点起名如“获取用户资料_Webhook”,比叫“节点1”调试效率高 3 倍
  3. 复杂逻辑拆解:超过三行的表达式,果断用 Function 节点写 JS 函数——我见过有人用 8 层三元运算符把自己绕晕

现在轮到你了:分享你的“变量救星时刻”

变量系统看似简单,实则藏着 n8n 最强大的灵魂——它让静态流程图进化成会思考的数字员工。不妨在评论区告诉我:你曾用哪个表达式解决了最棘手的问题?或者,你现在卡在哪个变量路径上?我会亲自为你诊断。下期我们深入 Function 节点,教你用 20 行代码实现企业级审批引擎。