难度:进阶 → 高阶 | 标签:Code | 类型:逻辑核心 / 数据中台 / AI 自动化中枢
如果说:
-
✅ Set 是"数据构造器"
-
✅ Item Lists 是"批量调度器"
-
✅ IF / Switch 是"逻辑分流器"
那么:
✅ Code 节点 = n8n 自动化系统的"CPU + 操作系统"
你在企业级项目中,一旦遇到这些需求:
-
复杂业务规则计算
-
多字段联动逻辑
-
动态结构转换
-
风控判断
-
AI Prompt 组装
-
RAG 查询参数构建
-
金额、税费、分润计算
❗ 100% 都绕不开 Code 节点。
一、Code 节点的官方级本质定义
✅ Code 节点的唯一职责:
👉 在 n8n 工作流中直接执行 JavaScript,对数据进行"无限制逻辑处理"
它与其它节点的根本区别是:
| 对比项 | 普通节点 | Code 节点 |
|---|---|---|
| 功能范围 | 功能被限制 | 无限 JS 能力 |
| 数据结构 | 受 UI 约束 | 完全自由 |
| 业务规则 | 靠参数拼装 | 由你写代码决定 |
| AI / RAG | 只能拼参数 | 可写完整策略 |
✅ 在企业架构中,它的真实身份是:
-
业务规则引擎
-
风控计算引擎
-
数据清洗中台
-
AI Prompt 调度中心
-
RAG 查询构建器
二、Code 节点 API 级运行机制(企业必懂)
✅ 1️⃣ 输入数据结构($input)
Code 节点默认可访问:
$input.all() // 获取所有 item
$input.first() // 获取第一条数据
$json // 当前 item 的 JSON
每一条进入 Code 的数据,本质结构都是:
{
"json": { ... },
"binary": { ... }
}
✅ 你写的所有逻辑,本质都是在:
👉 对这个 json 进行"增、删、改、算、重组"
✅ 2️⃣ 输出规则(return 格式是生死线)
❗ Code 节点的唯一输出规则:
return [
{ json: { ... } },
{ json: { ... } }
]
✅ 你必须 永远返回数组结构,否则:
-
❌ 下游节点直接报错
-
❌ 数据流中断
-
❌ 子流程无法接管
✅ 3️⃣ 可用能力边界(企业级理解)
✅ 允许:
-
纯 JavaScript 运算
-
JSON 结构重组
-
for/while/map/reduce
-
正则表达式
-
时间计算
-
金额计算
-
AI Prompt 拼接
❌ 不允许:
-
直接访问外部网络
-
安装 npm 包
-
访问服务器文件系统
三、企业级标准 Mock 测试数据(业务计算通用模型)
以下是 模拟企业项目里最典型的一类输入结构:
{
"user_id": "U001",
"type": "vip",
"order_amount": 1200,
"coupon": 100,
"region": "CN"
}
你的 Code 节点一般要做的不是:
"改字段"
而是:
✅ "基于规则,算出一堆新业务字段"
四、企业最核心的 5 类 Code 节点实战模型
✅ 模型一:业务规则计算(订单 / 分润 / 税费)
const price = $json.order_amount;
const coupon = $json.coupon;
const payAmount = price - coupon;
const tax = payAmount * 0.06;
const finalAmount = payAmount + tax;
return [
{
json: {
...$json,
pay_amount: payAmount,
tax,
final_amount: finalAmount
}
}
];
✅ 用于:
-
电商
-
SaaS
-
分销
-
财务系统
✅ 模型二:风控 / 风险拦截
let riskLevel = "low";
if ($json.order_amount > 5000) {
riskLevel = "high";
}
return [
{
json: {
...$json,
risk_level: riskLevel
}
}
];
✅ 后面直接接:
-
IF
-
人工审核
-
冻结订单
✅ 模型三:AI Prompt 动态构造(RAG 标配)
const question = $json.question;
const userType = $json.type;
const prompt = `
你是企业客服AI,
用户类型:${userType}
用户问题:${question}
请给出专业、合规、简洁的回答:
`;
return [
{
json: {
...$json,
prompt
}
}
];
✅ 这一步是:
❗ 所有 AI 自动化系统的"灵魂中枢"
✅ 模型四:数据清洗 & 结构标准化
return [
{
json: {
uid: String($json.user_id),
amount: Number($json.order_amount),
region: ($json.region || "").toUpperCase()
}
}
];
✅ 为:
-
数据库入库
-
BI 报表
-
向量入库
-
搜索引擎
做准备。
✅ 模型五:RAG 查询参数构建(企业知识库)
const question = $json.question;
return [
{
json: {
query: question,
top_k: 5,
score_threshold: 0.75
}
}
];
✅ 这一段后面直接接:
-
向量数据库
-
Embedding 查询
-
知识召回
五、✅ 可直接导入 n8n 的企业级 Demo JSON
👉 功能:
Set 构造订单数据 → Code 自动计算 → 输出最终金额
{
"nodes": [
{
"id": "Set-Mock",
"name": "Mock 订单数据",
"type": "n8n-nodes-base.set",
"typeVersion": 2,
"position": [200, 300],
"parameters": {
"keepOnlySet": true,
"values": {
"json": [
{ "name": "user_id", "value": "U001" },
{ "name": "order_amount", "value": 1200 },
{ "name": "coupon", "value": 100 }
]
}
}
},
{
"id": "Code-Core",
"name": "计算应付金额",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [500, 300],
"parameters": {
"language": "javascript",
"jsCode": "const price = $json.order_amount;\nconst coupon = $json.coupon;\n\nconst payAmount = price - coupon;\nconst tax = payAmount * 0.06;\nconst finalAmount = payAmount + tax;\n\nreturn [\n {\n json: {\n ...$json,\n pay_amount: payAmount,\n tax,\n final_amount: finalAmount\n }\n }\n];"
}
}
],
"connections": {
"Mock 订单数据": {
"main": [
[
{
"node": "计算应付金额",
"type": "main",
"index": 0
}
]
]
}
}
}
✅ 你导入后会看到:
-
原始金额 1200
-
优惠 100
-
税费 6%
-
最终应付金额自动生成 ✅
六、企业级最佳实践(Code 节点 8 条铁律)
✅ 1️⃣ 所有复杂逻辑,一律进 Code,不要靠 UI 拼参数
✅ 2️⃣ 所有返回必须是数组结构
✅ 3️⃣ 禁止在 Code 里写"与业务无关的演示代码"
✅ 4️⃣ 所有金额、比例、阈值必须变量化
✅ 5️⃣ 所有 AI Prompt 必须由 Code 动态生成
✅ 6️⃣ Code 只负责"逻辑",不负责"通讯"
✅ 7️⃣ 高风险规则(风控/封禁)必须走 Code
✅ 8️⃣ 所有 Code 必须可复用、可复制、可模板化
七、新手最容易踩的 6 个"系统级大坑"
❌ return 不是数组 → 整个流程直接炸
❌ 在 Code 里乱改字段名 → 下游节点全挂
❌ 金额用字符串 → 财务系统全错
❌ 所有逻辑全堆一个 Code → 后期必崩
❌ Prompt 写死 → AI 无法规模化
❌ 风控逻辑不用 Code → 安全事故只是时间问题
八、你现在已经真正具备的"企业级能力"
完成本篇后,你已经真正具备:
✅ 企业级业务规则引擎能力
✅ AI Prompt 工程能力
✅ 自动化风控能力
✅ RAG 查询构建能力
✅ 数据中台处理能力
这意味着:
✅ 你已经不是在"玩 n8n",
✅ 而是在 "用 n8n 搭企业自动化操作系统"。