大家好,我是莎姐
n8n中有个非常强大也复杂的节点,那就是Code节点。
当内置节点无法满足需求时,你可能需要它...
当数据需要复杂的处理时,你可能需要它...
当数据条件逻辑过于复杂事,你可能需要它...
今天来带大家拆解一下Code节点的几种简单的用法。

这个n8n工作流主要用到了4个code节点,每个code节点处理数据的功能都不一样。
最后也会拆解Code节点的两种执行模式和使用Code节点的场景
1. Start Tutorial (手动触发器)

类型: manualTrigger
功能: 工作流的起始点,手动触发执行
2. Sample Data (Set节点)

类型: n8n-nodes-base.set
功能: 创建示例用户数据
数据结构: 包含4个用户,每个用户有firstName、lastName、birthDate字段
3. Split Out Users (分割节点)

类型: n8n-nodes-base.splitOut
功能: 将用户数组分割成单独的项目,为后续逐个处理做准备
关键参数: fieldToSplitOut: "users"
4. Process Each User (Code节点 - 基础)

模式: runOnceForEachItem (为每个项目运行一次)
功能:
- 计算用户全名 (firstName + lastName)
- 根据出生日期计算年龄
演示基本的数据处理和转换
5. Fetch External Data (Code节点 - 高级)

模式: runOnceForEachItem
功能: 调用外部API (genderize.io) 根据名字猜测性别,
演示this.helpers.httpRequest的使用
6. Calculate Average Age (Code节点 - 聚合)

模式: runOnceForAllItems (为所有项目运行一次)
功能:
使用$items()获取所有用户数据 计算平均年龄 演示数据聚合操作
7. Create Binary File (Code节点 - 专家级)
模式: runOnceForAllItems
功能: 生成CSV格式的用户报告 使用this.helpers.prepareBinaryData创建二进制文件
💡 关键技术点
Code节点的两种执行模式:
runOnceForEachItem: 为每个输入项目单独执行
runOnceForAllItems: 为所有项目执行一次(默认模式)

- Run Once for Each Item (为每个项目运行一次)
工作原理:
- 代码会为每个输入项目单独执行一次
- 每次执行时,只能访问当前正在处理的那一个项目
- 输出的项目数量通常等于输入的项目数量
数据访问方式:
// 获取当前项目的数据
const currentItem = $input.item.json;
// 返回单个项目
return {
...currentItem,
newField: "新增字段"
};
- Run Once for All Items (为所有项目运行一次)
工作原理:
- 代码只执行一次,但可以访问所有输入项目
- 可以对所有数据进行聚合、分析或批量处理
- 输出可以是任意数量的项目
数据访问方式:
// 获取所有项目的数组
const allItems = $items();
// 可以返回单个项目、多个项目或空数组
return [
{
json: {
summary: "处理结果",
totalCount: allItems.length
}
}
];
⚡ 异步操作的重要作用
为什么需要异步(async/await)?
- 网络请求的本质特性:
// ❌ 错误方式 - 同步思维
const response = this.helpers.httpRequest({ url: 'https://api.example.com' });
console.log(response); // 这里会得到Promise对象,不是实际数据
// ✅ 正确方式 - 异步处理
const response = await this.helpers.httpRequest({ url: 'https://api.example.com' });
console.log(response); // 这里得到实际的API响应数据
- 性能优化:
不阻塞执行:在等待API响应时,不会阻塞整个n8n进程
并发处理:多个API调用可以同时进行
🎓 总结
这个工作流是一个渐进式,code节点的处理包含4个层次:
基础: 数据处理和转换
高级: API调用和异步操作
聚合: 多项目数据汇总
专家: 文件生成和二进制数据处理
🎯 Code节点的使用场景
- 内置节点无法满足需求时
- 复杂的数据处理和转换
- 数据清洗:去重、格式化、验证
- 数据聚合:统计、分组、汇总
- 数据重构:改变数据结构、合并字段
- 条件逻辑过于复杂
- 需要调用特定API或处理特殊格式
- 自定义API调用:需要特殊headers、认证方式
- 数据格式转换:XML、CSV、特殊编码
- 加密解密:数据安全处理
- 需要使用JavaScript特有功能
- 正则表达式:复杂的文本处理
- 日期时间操作:复杂的时间计算
- 数学运算:统计、算法计算
- 字符串处理:格式化、解析
- 批量操作和聚合分析
- 统计分析:计算平均值、总和、趋势
- 报告生成:创建汇总数据
- 数据导出:生成文件、格式化输出
既然都看到这里了,对你有帮助的话,别忘了一键三连哈,非常Thanks♪(・ω・)ノ
你的一键三连对我是莫大的鼓励!!!
我准备了一份n8n资料合集,需要的可以+我,回复“资料”获取
如果想获取该工作流的话,回复“工作流”获取。


##n8n合集
n8n×Docker×Playwright:小红书自动上传避坑指南
ChatGPT都能叫滴滴了?逆天MCP让AI出行时代提前到来
n8n进阶实战:AI新闻机器人升级版,邮箱推送+飞书表格双重自动化
##n8n #智能体#工作流#Code节点