大家好,我是莎姐

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: 为所有项目执行一次(默认模式)

图片

  1. Run Once for Each Item (为每个项目运行一次)

工作原理:

  • 代码会为每个输入项目单独执行一次

  • 每次执行时,只能访问当前正在处理的那一个项目

  • 输出的项目数量通常等于输入的项目数量

数据访问方式:

<span data-cacheurl="" data-remoteid="" data-lazy-bgimg="https://mmbiz.qpic.cn/mmbiz_svg/kiaXicXJs2M4dKWOu9ZDkkTwxKBEFQLcDic8QwJy3P2zvUANricaicYgXe5p5wHbPusgCfg53FFklbqcaNaGCrUAqnACibQjuh0Zj7/640?wx_fmt=svg&amp;from=appmsg" data-fail="0"></span><code><span leaf="">// 获取当前项目的数据</span><br><span leaf="">const currentItem =&nbsp;</span><span><span leaf="">$input</span></span><span leaf="">.item.json;</span><br><br><span leaf="">// 返回单个项目</span><br><span><span leaf="">return</span></span><span leaf="">&nbsp;{</span><br><span leaf="">&nbsp; ...currentItem,</span><br><span leaf="">&nbsp; newField:&nbsp;</span><span><span leaf="">"新增字段"</span></span><br><span leaf="">};</span><br><br></code>
  1. Run Once for All Items (为所有项目运行一次)

工作原理:

  • 代码只执行一次,但可以访问所有输入项目

  • 可以对所有数据进行聚合、分析或批量处理

  • 输出可以是任意数量的项目

数据访问方式:

<span data-cacheurl="" data-remoteid="" data-lazy-bgimg="https://mmbiz.qpic.cn/mmbiz_svg/kiaXicXJs2M4dKWOu9ZDkkTwxKBEFQLcDic8QwJy3P2zvUANricaicYgXe5p5wHbPusgCfg53FFklbqcaNaGCrUAqnACibQjuh0Zj7/640?wx_fmt=svg&amp;from=appmsg" data-fail="0"></span><code><span leaf="">// 获取所有项目的数组</span><br><span leaf="">const allItems =&nbsp;</span><span><span leaf="">$items</span></span><span leaf="">();</span><br><br><span leaf="">// 可以返回单个项目、多个项目或空数组</span><br><span><span leaf="">return</span></span><span leaf="">&nbsp;[</span><br><span leaf="">&nbsp; {</span><br><span leaf="">&nbsp; &nbsp; json: {</span><br><span leaf="">&nbsp; &nbsp; &nbsp; summary:&nbsp;</span><span><span leaf="">"处理结果"</span></span><span leaf="">,</span><br><span leaf="">&nbsp; &nbsp; &nbsp; totalCount: allItems.length</span><br><span leaf="">&nbsp; &nbsp; }</span><br><span leaf="">&nbsp; }</span><br><span leaf="">];</span><br><br></code>

⚡ 异步操作的重要作用

为什么需要异步(async/await)?

  1. 网络请求的本质特性:
<span data-cacheurl="" data-remoteid="" data-lazy-bgimg="https://mmbiz.qpic.cn/mmbiz_svg/kiaXicXJs2M4dKWOu9ZDkkTwxKBEFQLcDic8QwJy3P2zvUANricaicYgXe5p5wHbPusgCfg53FFklbqcaNaGCrUAqnACibQjuh0Zj7/640?wx_fmt=svg&amp;from=appmsg" data-fail="0"></span><code><span leaf="">// ❌ 错误方式 - 同步思维</span><br><span leaf="">const response = this.helpers.httpRequest({ url:&nbsp;</span><span><span leaf="">'https://api.example.com'</span></span><span leaf="">&nbsp;});</span><br><span leaf="">console.log(response); // 这里会得到Promise对象,不是实际数据</span><br><br><span leaf="">// ✅ 正确方式 - 异步处理</span><br><span leaf="">const response = await this.helpers.httpRequest({ url:&nbsp;</span><span><span leaf="">'https://api.example.com'</span></span><span leaf="">&nbsp;});</span><br><span leaf="">console.log(response); // 这里得到实际的API响应数据</span><br><br></code>
  1. 性能优化:

不阻塞执行:在等待API响应时,不会阻塞整个n8n进程

并发处理:多个API调用可以同时进行

🎓 总结

这个工作流是一个渐进式,code节点的处理包含4个层次:

基础: 数据处理和转换

高级: API调用和异步操作

聚合: 多项目数据汇总

专家: 文件生成和二进制数据处理

🎯 Code节点的使用场景

  1. 内置节点无法满足需求时

  2. 复杂的数据处理和转换

  • 数据清洗:去重、格式化、验证

  • 数据聚合:统计、分组、汇总

  • 数据重构:改变数据结构、合并字段

  1. 条件逻辑过于复杂

  2. 需要调用特定API或处理特殊格式

  • 自定义API调用:需要特殊headers、认证方式

  • 数据格式转换:XML、CSV、特殊编码

  • 加密解密:数据安全处理

  1. 需要使用JavaScript特有功能
  • 正则表达式:复杂的文本处理

  • 日期时间操作:复杂的时间计算

  • 数学运算:统计、算法计算

  • 字符串处理:格式化、解析

  1. 批量操作和聚合分析
  • 统计分析:计算平均值、总和、趋势

  • 报告生成:创建汇总数据

  • 数据导出:生成文件、格式化输出

既然都看到这里了,对你有帮助的话,别忘了一键三连哈,非常Thanks♪(・ω・)ノ

你的一键三连对我是莫大的鼓励!!!

我准备了一份n8n资料合集,需要的可以+我,回复“资料”获取

如果想获取该工作流的话,回复“工作流”获取。

图片

图片

##n8n合集

n8n × 豆包 4.0:一键触发,批量自动化生图

n8n×Docker×Playwright:小红书自动上传避坑指南

ChatGPT都能叫滴滴了?逆天MCP让AI出行时代提前到来

5分钟!用n8n打造专属AI数据分析可视化助手

n8n实战:5分钟搞定小红书图文笔记工作流

n8n踩坑血泪史:花了一周时间才明白的道理

n8n实战指南:10分钟用高德MCP打造智能出行助手!

n8n核心节点类型保姆级指南文

n8n进阶实战:AI新闻机器人升级版,邮箱推送+飞书表格双重自动化

##n8n #智能体#工作流#Code节点