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

第二部分:核心概念与功能 → 节点 → 节点配置 → 参数 → 表达式

[复制链接]

74

主题

0

回帖

40万

积分

超级版主

积分
400222
发表于 2025-5-13 19:38:06 | 显示全部楼层 |阅读模式
本帖最后由 疯狂的赤泥 于 2025-5-13 20:41 编辑

n8n 表达式是嵌入在节点参数中的动态代码片段,允许您在工作流运行时引用和操作来自先前节点的数据。它们是使 n8n 工作流具有强大灵活性和动态性的核心机制。
基本语法:
表达式总是被包裹在双花括号 {{ }} 中。在双花括号内部,您可以访问和操作工作流的数据。
访问先前节点的数据:
n8n 提供了一些全局对象和函数,用于访问先前节点的数据:
  • $input: 此对象用于访问输入到当前节点的数据。它是一个包含所有输入 item 对象的数组。

    • $input.first(): 返回输入数组中的第一个 item 对象。
    • $input.last(): 返回输入数组中的最后一个 item 对象。
    • $input.item(index): 返回输入数组中指定索引的 item 对象(索引从 0 开始)。
    • $input.all(): 返回包含所有输入 item 对象的完整数组。
    • .json: 访问 item 对象中的 JSON 数据(通常是先前节点输出的 data 属性)。例如:{{ $input.first().json.email }}。
    • .binary: 访问 item 对象中的二进制数据。例如:{{ $input.first().binary.file.data }}。
    • .itemIndex: 返回当前 item 在输入数组中的索引(在处理多个 item 时很有用)。
  • $node: 此对象用于访问特定节点的数据。

    • $node["NodeName"].data: 访问名为 "NodeName" 的节点的所有输出 item 对象的 data 属性(返回一个数组)。
    • $node["NodeName"].data.0.json.fieldName: 访问名为 "NodeName" 的节点的第一个输出 item 的 data 中的 fieldName 字段。
    • $node["NodeName"].all(): 返回名为 "NodeName" 的节点的所有输出 item 对象。
  • $parameter: 此对象用于访问当前节点配置的静态参数值。例如,如果您在 "Set" 节点中设置了一个名为 "myVariable" 的字段,您可以使用 {{ $parameter.myVariable }} 来引用它的值。

常用表达式函数和操作符:
在表达式内部,您可以使用 JavaScript 的基本语法以及 n8n 提供的一些内置函数和操作符进行数据处理:
  • 字符串操作:

    • .toUpperCase(): 将字符串转换为大写。{{ $input.first().json.name.toUpperCase() }}
    • .toLowerCase(): 将字符串转换为小写。
    • .substring(start, end): 返回字符串的子串。
    • .replace(searchValue, replaceValue): 替换字符串中的子串。
    • .split(separator): 将字符串分割成数组。
    • .trim(): 移除字符串两端的空白字符。
  • 数字操作:

    • +, -, *, /, %: 基本的算术运算符。
    • Math.round(), Math.ceil(), Math.floor(): 数学取整函数。
    • Math.random(): 生成随机数。
  • 日期和时间操作:

    • new Date(): 创建一个新的 Date 对象。
    • .toISOString(): 将 Date 对象转换为 ISO 8601 格式的字符串。
    • .toLocaleDateString(), .toLocaleTimeString(): 将 Date 对象格式化为本地日期或时间字符串。
    • 您还可以使用像 moment 这样的库(如果 n8n 实例包含它)进行更复杂的日期和时间操作。
  • 逻辑操作符:

    • ==, ===, !=, !==, >, <, >=, <=: 比较运算符。
    • && (AND), || (OR), !(NOT): 逻辑运算符。
    • 三元运算符 condition ? valueIfTrue : valueIfFalse.
  • 数组操作:

    • .length: 获取数组的长度。
    • .map(callback): 对数组中的每个元素执行回调函数并返回新数组。
    • .filter(callback): 返回数组中满足回调函数条件的元素组成的新数组。
    • .join(separator): 将数组元素连接成一个字符串。
  • JSON 操作:

    • JSON.stringify(object): 将 JavaScript 对象转换为 JSON 字符串。
    • JSON.parse(string): 将 JSON 字符串转换为 JavaScript 对象。

示例:
假设前一个节点输出的 JSON 数据是 {"firstName": "John", "lastName": "Doe", "age": 30}。
  • {{ $input.first().json.firstName }} 将会得到 "John"。
  • {{ $input.first().json.lastName.toUpperCase() }} 将会得到 "DOE"。
  • {{ $input.first().json.age > 25 ? "Adult" : "Young" }} 将会得到 "Adult"。
  • {{ JSON.stringify($input.first().json) }} 将会得到 {"firstName":"John","lastName":"Doe","age":30}。
掌握 n8n 表达式是构建动态和智能自动化工作流的关键。通过灵活地引用和操作数据,您可以实现各种复杂的数据处理和流程控制。

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

本版积分规则

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

GMT+8, 2025-5-24 05:49 , Processed in 0.061605 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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