表达式
表达式是所有 n8n 节点中实现的一项强大功能。它们允许根据以下数据动态设置节点参数:
- 先前节点执行
- 工作流程
- 您的 n8n 环境
您还可以在表达式中执行 JavaScript,这是一种方便、简单的方法,可以将数据操作为有用的参数值,而无需编写大量额外的代码。
n8n 创建并使用了一种名为
Tournament的模板语言,并通过自定义方法、变量以及数据转换函数对其进行了扩展。这些功能使执行常见任务(例如从其他节点获取数据或访问工作流元数据)变得更加容易。n8n 还支持两个库:
编写表达式
要使用表达式设置参数值:
- 将鼠标悬停在您想要使用表达式的参数上。
- 在固定/表达式切换中选择表达式。
- 在参数中写入表达式,或选择“打开表达式编辑器”以打开表达式编辑器。如果您使用表达式编辑器,则可以在变量选择器中浏览可用数据。所有表达式的格式均为。
示例:从 webhook 主体获取数据
假设以下场景:您有一个 webhook 触发器,它通过 webhook 主体接收数据。您希望提取其中的一些数据用于工作流。
您的 webhook 数据与此类似:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
在工作流的下一个节点中,您只想获取 的值。您可以使用以下表达式:
1 | |
此表达式:
- 使用 n8n 的自定义变量访问传入的 JSON 格式的数据。
- 查找 的值(本例中为“纽约”)。请注意,本例使用 JMESPath 语法查询 JSON 数据。您也可以将此表达式写为。
示例:编写更长的 JavaScript
一个表达式只包含一行 JavaScript 代码。这意味着您无法执行变量赋值或多个独立操作。
要了解 JavaScript 在表达式中的局限性并开始思考解决方法,请查看以下两段代码。这两个代码示例都使用 Luxon 日期和时间库来查找两个日期之间的时间(以月为单位),并将代码括在方括号中,就像表达式一样。
但是,第一个例子并不是一个有效的 n8n 表达式:
1 2 3 4 5 6 7 8 9 10 11 | |
第二个例子是有效的:
1 | |
常见问题
有关表达式的常见错误或问题以及建议的解决步骤,请参阅
常见问题。