N8N中文教程
代码开发

表达式#

表达式是 n8n 所有节点中实现的一项强大功能。它们允许根据以下来源的数据动态设置节点参数:

  • 前一个节点的执行结果
  • 工作流本身
  • 你的 n8n 环境

你还可以在表达式中执行 JavaScript,这为将数据处理成有用的参数值提供了一种便捷且简单的方式,而无需编写大量额外代码。

n8n 创建并使用了一种名为 Tournament 的模板语言,并通过 内置方法和变量数据转换函数 对其进行了扩展。这些功能使得执行常见任务(例如从其他节点获取数据或访问工作流元数据)变得更加容易。

此外,n8n 还支持两个库:

  • Luxon —— 用于处理日期和时间。
  • JMESPath —— 用于查询 JSON 数据。

n8n 中的数据#

编写表达式时,了解 n8n 中的数据结构和行为会很有帮助。有关在工作流中处理数据的更多信息,请参考 数据 文档。

编写表达式#

要使用表达式设置参数值,请执行以下操作:

  1. 将鼠标悬停在你想使用表达式的参数上。
  2. 固定值/表达式 切换按钮中选择 表达式 (Expressions)
  3. 直接在参数输入框中编写表达式,或点击 打开表达式编辑器 Open expressions editor icon 打开表达式编辑器。如果使用表达式编辑器,你可以通过 变量选择器 (Variable selector) 浏览可用的数据。所有表达式的格式均为 {{ your expression here }}

示例:从 Webhook 正文获取数据#

考虑以下场景:你有一个 Webhook 触发器,通过 Webhook 请求体接收数据。你想提取其中部分数据以供工作流使用。

你的 Webhook 接收到的数据如下所示:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15

| ``` [ { "headers":{ "host":"n8n.instance.address", ... }, "params":{}, "query":{}, "body":{ "name":"Jim", "age":30, "city":"New York" } } ]


---|---
在工作流中的下一个节点中,你只想获取 `city` 字段的值。可以使用以下表达式:

1

| ```
{{$json.body.city}}

---|--- 该表达式的作用是:

  1. 使用 n8n 提供的自定义变量 $json 访问传入的 JSON 格式数据。
  2. 获取 city 字段的值(本例中为 "New York")。注意,此示例使用了 JMESPath 语法来查询 JSON 数据。你也可以将此表达式写作 {{$json['body']['city']}}

示例:编写更长的 JavaScript 代码#

你可以在表达式中执行变量赋值或多个语句等操作,但需要使用 IIFE(Immediately Invoked Function Expression,立即调用函数表达式)语法将代码包裹起来。 以下代码使用 Luxon 日期和时间库来计算两个日期之间的月份数。我们将代码同时包裹在 Handlebars 表达式括号和 IIFE 语法中。

1
2
3
4
5
6

| ``` {{(()=>{ let end = DateTime.fromISO('2017-03-13'); let start = DateTime.fromISO('2017-02-13'); let diffInMonths = end.diff(start, 'months'); return diffInMonths.toObject(); })()}}


---|---

## 常见问题[#](https://docs.n8n.io/code/expressions/#common-issues "永久链接")

关于表达式中的常见错误或问题以及建议的解决方法,请参考 [常见问题](https://docs.n8n.io/code/cookbook/expressions/common-issues/)。

聊天查看文档
此页面是否对你有帮助?[大拇指向上](https://docs.n8n.io/_images/assets/thumb_up.png)有帮助  [大拇指向下](https://docs.n8n.io/_images/assets/thumb_down.png)没有帮助
感谢你的反馈!
提交

[ 上一页  n8n 文档与指南中的代码 ](https://docs.n8n.io/code/) [ 下一页  使用 Code 节点 ](https://docs.n8n.io/code/code-node/)

由 [ Material for MkDocs Insiders ](https://squidfunk.github.io/mkdocs-material/) 提供支持