找回密码
 创建社区账号
搜索
热搜: MCP 知识库 案例
查看: 64|回复: 0

第二部分:核心概念与功能 → 数据处理与转换 → 使用函数节点处理数据

[复制链接]

74

主题

0

回帖

40万

积分

超级版主

积分
400222
发表于 2025-5-13 21:08:06 | 显示全部楼层 |阅读模式
使用函数节点处理数据 (Processing Data with the Function Node)
函数节点是 n8n 中最强大和最灵活的数据处理工具之一。它允许您编写自定义的 JavaScript 代码来操作和转换工作流中传递的数据,实现任何内置节点无法直接完成的复杂逻辑。
函数节点的功能:
  • 访问和修改数据: 您可以访问先前节点传递给函数节点的 $input 数据(一个包含 item 对象的数组),并使用 JavaScript 代码对其进行任意修改、重构或提取。
  • 创建新数据: 您可以根据您的逻辑创建新的 item 对象,并设置其 json 和 binary 属性。
  • 执行逻辑控制: 您可以在函数节点中实现复杂的条件判断、循环和其他控制流结构,以根据数据的不同情况进行不同的处理。
  • 与其他服务进行简单交互: 虽然不推荐用于复杂的 API 集成(应该使用专门的集成节点),但您可以在函数节点中进行简单的 HTTP 请求或其他与外部服务的交互。
  • 记录日志和调试信息: 您可以使用 console.log() 在执行日志中记录信息,帮助您调试工作流。
函数节点的基本结构:
一个函数节点通常包含一个代码编辑器,您可以在其中编写 JavaScript 代码。您的代码需要返回一个包含 item 对象的数组,作为函数节点的输出。
访问输入数据:
输入到函数节点的数据可以通过全局对象 $input 访问。如前所述,它是一个包含所有输入 item 对象的数组。您可以使用 $input.first(), $input.all(), $input.item(index) 等方法来获取特定的 item 或所有 item。每个 item 对象都有 .json 和 .binary 属性。
操作数据:
您可以使用标准的 JavaScript 语法来操作输入数据。例如:
JavaScript (英语)

const items = $input.all().map(item => {  const name = item.json.firstName + ' ' + item.json.lastName;  const email = item.json.email.toLowerCase();  return {    json: {      fullName: name,      email: email,      originalData: item.json, // 保留原始数据    },  };});return items;


这个例子演示了如何遍历输入的所有 item,从 json 属性中提取 firstName 和 lastName 并合并成 fullName,将 email 转换为小写,并创建一个新的包含这些字段以及原始数据的 item 对象数组作为输出。
创建和返回输出数据:
函数节点必须返回一个包含 item 对象的数组。每个 item 对象都应该至少包含一个 json 属性(用于结构化数据),并且可以包含一个 binary 属性(用于二进制数据)。
使用第三方库 (需要 n8n 实例支持):
根据您的 n8n 实例配置,您可能可以在函数节点中使用一些预安装的第三方 JavaScript 库(例如 moment 用于日期处理,lodash 用于实用工具函数,axios 用于 HTTP 请求)。您需要查阅您的 n8n 实例的文档或管理员了解可用的库。
注意事项:
  • 性能: 对于处理大量数据的场景,请注意您的 JavaScript 代码的性能。避免复杂的循环和不必要的操作。
  • 错误处理: 在您的代码中使用 try...catch 语句来捕获可能发生的错误,并适当地处理它们,以防止整个工作流崩溃。
  • 安全性: 避免在函数节点中硬编码敏感信息。使用凭证管理来安全地存储和访问密钥和令牌。
  • 可维护性: 编写清晰、易于理解和维护的代码。添加注释来解释您的逻辑。
函数节点为 n8n 提供了无限的数据处理能力,只要您能够用 JavaScript 表达您的逻辑,就可以在函数节点中实现。

您需要登录后才可以回帖 登录 | 创建社区账号

本版积分规则

QQ|手机版|小黑屋|n8n 中文社区

GMT+8, 2025-5-23 05:09 , Processed in 0.061098 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表