n8n保姆级教程:5分钟手把手拆解Code节点4种用法,小白也能秒懂 - 知识铺
大家好,我是莎姐
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 (为每个项目运行一次)
工作原理:
-
代码会为每个输入项目单独执行一次
-
每次执行时,只能访问当前正在处理的那一个项目
-
输出的项目数量通常等于输入的项目数量
数据访问方式:
<span data-cacheurl="" data-remoteid="" data-lazy-bgimg="https://mmbiz.qpic.cn/mmbiz_svg/kiaXicXJs2M4dKWOu9ZDkkTwxKBEFQLcDic8QwJy3P2zvUANricaicYgXe5p5wHbPusgCfg53FFklbqcaNaGCrUAqnACibQjuh0Zj7/640?wx_fmt=svg&from=appmsg" data-fail="0"></span><code><span leaf="">// 获取当前项目的数据</span><br><span leaf="">const currentItem = </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=""> {</span><br><span leaf=""> ...currentItem,</span><br><span leaf=""> newField: </span><span><span leaf="">"新增字段"</span></span><br><span leaf="">};</span><br><br></code>
- Run Once for All Items (为所有项目运行一次)
工作原理:
-
代码只执行一次,但可以访问所有输入项目
-
可以对所有数据进行聚合、分析或批量处理
-
输出可以是任意数量的项目
数据访问方式:
<span data-cacheurl="" data-remoteid="" data-lazy-bgimg="https://mmbiz.qpic.cn/mmbiz_svg/kiaXicXJs2M4dKWOu9ZDkkTwxKBEFQLcDic8QwJy3P2zvUANricaicYgXe5p5wHbPusgCfg53FFklbqcaNaGCrUAqnACibQjuh0Zj7/640?wx_fmt=svg&from=appmsg" data-fail="0"></span><code><span leaf="">// 获取所有项目的数组</span><br><span leaf="">const allItems = </span><span><span leaf="">$items</span></span><span leaf="">();</span><br><br><span leaf="">// 可以返回单个项目、多个项目或空数组</span><br><span><span leaf="">return</span></span><span leaf=""> [</span><br><span leaf=""> {</span><br><span leaf=""> json: {</span><br><span leaf=""> summary: </span><span><span leaf="">"处理结果"</span></span><span leaf="">,</span><br><span leaf=""> totalCount: allItems.length</span><br><span leaf=""> }</span><br><span leaf=""> }</span><br><span leaf="">];</span><br><br></code>
⚡ 异步操作的重要作用
为什么需要异步(async/await)?
- 网络请求的本质特性:
<span data-cacheurl="" data-remoteid="" data-lazy-bgimg="https://mmbiz.qpic.cn/mmbiz_svg/kiaXicXJs2M4dKWOu9ZDkkTwxKBEFQLcDic8QwJy3P2zvUANricaicYgXe5p5wHbPusgCfg53FFklbqcaNaGCrUAqnACibQjuh0Zj7/640?wx_fmt=svg&from=appmsg" data-fail="0"></span><code><span leaf="">// ❌ 错误方式 - 同步思维</span><br><span leaf="">const response = this.helpers.httpRequest({ url: </span><span><span leaf="">'https://api.example.com'</span></span><span leaf=""> });</span><br><span leaf="">console.log(response); // 这里会得到Promise对象,不是实际数据</span><br><br><span leaf="">// ✅ 正确方式 - 异步处理</span><br><span leaf="">const response = await this.helpers.httpRequest({ url: </span><span><span leaf="">'https://api.example.com'</span></span><span leaf=""> });</span><br><span leaf="">console.log(response); // 这里得到实际的API响应数据</span><br><br></code>
- 性能优化:
不阻塞执行:在等待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节点
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/ai/post/202510/n8n%E4%BF%9D%E5%A7%86%E7%BA%A7%E6%95%99%E7%A8%8B5%E5%88%86%E9%92%9F%E6%89%8B%E6%8A%8A%E6%89%8B%E6%8B%86%E8%A7%A3Code%E8%8A%82%E7%82%B94%E7%A7%8D%E7%94%A8%E6%B3%95%E5%B0%8F%E7%99%BD%E4%B9%9F%E8%83%BD%E7%A7%92%E6%87%82/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com