使用函数节点处理数据 (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 表达您的逻辑,就可以在函数节点中实现。
|