n8n代码节点教程:用JavaScript扩展你的自动化能力

n8n代码节点教程:用JavaScript扩展你的自动化能力

【免费下载链接】n8n-docs Documentation for n8n, a fair-code licensed automation tool with a free community edition and powerful enterprise options. Build AI functionality into your workflows. 【免费下载链接】n8n-docs 项目地址: https://gitcode.com/gh_mirrors/n8/n8n-docs

n8n是一款功能强大的自动化工具,通过代码节点(Code node)功能,你可以使用JavaScript编写自定义逻辑,轻松扩展工作流的自动化能力。本文将为你详细介绍如何使用代码节点,让你的自动化工作流更加强大和灵活。

为什么选择代码节点?

代码节点是n8n中最强大的功能之一,它允许你:

  • 处理复杂的数据转换和计算
  • 实现自定义业务逻辑
  • 集成外部API和服务
  • 解决无法通过标准节点完成的特殊需求

对于需要处理复杂数据或实现特定功能的自动化场景,代码节点是理想的选择。

开始使用代码节点

基本界面介绍

在n8n工作流编辑器中,拖放"代码"节点到画布上,双击打开配置界面。你会看到两个主要选项卡:"代码"和"设置"。

n8n代码节点界面 n8n代码节点编辑界面,展示了JavaScript编辑区域和运行模式选择

选择运行模式

代码节点提供两种运行模式:

  1. 对所有项目运行一次:默认模式,无论输入多少项目,代码只执行一次
  2. 对每个项目运行一次:代码将为每个输入项目单独执行一次

根据你的需求选择合适的模式。处理批量数据转换时通常使用"对每个项目运行一次"模式。

JavaScript基础语法

n8n代码节点支持标准JavaScript语法,你可以使用:

  • 变量声明:let, const
  • 函数定义:function, 箭头函数 () => {}
  • 循环结构:for, forEach, map
  • 条件判断:if/else, switch
  • 数组和对象操作

访问输入数据

在代码节点中,输入数据通过$input对象访问:

// 获取所有输入项目
const items = $input.all();

// 处理每个项目
items.forEach(item => {
  // 访问项目数据
  const data = item.json;
  // 处理数据...
});

返回输出数据

处理完成后,使用return语句返回结果:

// 返回单个项目
return [{
  json: {
    result: "处理完成",
    value: 42
  }
}];

// 或返回多个项目
return [
  { json: { id: 1, name: "项目1" } },
  { json: { id: 2, name: "项目2" } }
];

实用示例

示例1:数据转换

将输入的日期字符串转换为ISO格式:

// 对每个项目运行一次模式
const date = new Date(item.json.dateString);
return {
  json: {
    originalDate: item.json.dateString,
    isoDate: date.toISOString(),
    year: date.getFullYear()
  }
};

示例2:数据过滤

筛选出价格大于100的产品:

// 对所有项目运行一次模式
const expensiveProducts = $input.all().filter(item => {
  return item.json.price > 100;
});

return expensiveProducts.map(product => ({
  json: {
    name: product.json.name,
    price: product.json.price,
    category: product.json.category
  }
}));

使用内置方法和变量

n8n提供了多种内置方法和变量,简化常见操作:

  • $input.all(): 获取所有输入项目
  • $item(index): 获取指定索引的项目
  • $json["property"]: 访问当前项目的属性
  • $env.VARIABLE_NAME: 访问环境变量
  • $now: 获取当前日期时间

在代码编辑器中输入$即可看到所有可用的内置方法和变量提示。

调试技巧

代码节点提供了多种调试方式:

  1. 使用console.log()输出调试信息,日志会显示在执行结果面板
  2. 使用$debug()方法在工作流执行时查看变量值
  3. 利用表达式编辑器测试数据路径和表达式

代码节点调试输出 代码节点执行日志示例,显示console.log输出和执行结果

高级功能

异步操作

代码节点支持异步JavaScript操作:

// 异步获取数据
async function fetchData(url) {
  const response = await fetch(url);
  return response.json();
}

// 使用异步函数
const data = await fetchData('https://api.example.com/data');
return [{ json: data }];

使用外部库

自托管n8n用户可以配置允许使用外部npm模块:

  1. 设置环境变量NODE_FUNCTION_ALLOW_BUILTINNODE_FUNCTION_ALLOW_EXTERNAL
  2. 在代码中导入所需模块:
const moment = require('moment');
const formattedDate = moment().format('YYYY-MM-DD');
return [{ json: { date: formattedDate } }];

常见问题解决

数据链接问题

当输入和输出项目数量不匹配时,需要手动处理项目链接:

// 保留项目链接
const newItems = items.map(item => ({
  json: { processed: true },
  pairedItem: { item: item.$node["node-name"].$id }
}));
return newItems;

性能优化

  • 避免在循环中执行繁重操作
  • 对大量数据使用批量处理
  • 利用$input.all()减少重复访问输入数据

总结

代码节点是n8n中最强大的功能之一,它为你的自动化工作流提供了无限可能。通过JavaScript编写自定义逻辑,你可以处理复杂的数据转换、实现特殊业务规则,并与各种API和服务集成。

无论是简单的数据处理还是复杂的业务逻辑,代码节点都能帮助你构建更强大、更灵活的自动化工作流。开始探索代码节点的潜力,提升你的n8n自动化技能吧!

要了解更多关于代码节点的高级用法,请参考官方文档:docs/code/code-node.mddocs/code/builtin/overview.md

【免费下载链接】n8n-docs Documentation for n8n, a fair-code licensed automation tool with a free community edition and powerful enterprise options. Build AI functionality into your workflows. 【免费下载链接】n8n-docs 项目地址: https://gitcode.com/gh_mirrors/n8/n8n-docs

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值