表达式参考
以下是一些常用表达式。下方还列出了更全面的参考。
本节内容
- Array:处理数组的方法。
- BinaryFile:二进制文件数据的属性。
- Boolean:处理布尔值的方法。
- CustomData:获取和设置自定义执行数据的方法。
- Date:转换 JavaScript Date 的方法。
- DateTime:处理 Luxon DateTime 的方法和属性。
- ExecData:当前执行的属性。
- HTTPResponse:最近一次 HTTP 调用的响应属性。
- Item:当前数据项的属性。
- NodeInputData:读取当前节点输入的方法。
- NodeOutputData:读取节点输出的方法。
- Number:处理数字的方法。
- Object:处理对象的方法。
- PrevNodeData:描述输入来源节点的属性。
- Root:顶层变量和辅助函数,例如
$json和$now。 - String:处理字符串的方法。
- WorkflowData:当前工作流的属性。
| 类别 | 表达式 | 说明 |
|---|---|---|
| 访问当前输入数据项的数据 | $json | 当前数据项的 JSON 数据 |
$json.fieldName | 当前数据项的字段 | |
$binary | 当前数据项的二进制数据 | |
| 访问前面节点的数据 | $("NodeName").first() | 节点中的第一个数据项 |
$("NodeName").item | 节点中关联的数据项。更多信息请参阅数据项关联。 | |
$("NodeName").all() | 节点中的所有数据项 | |
$("NodeName").last() | 节点中的最后一个数据项 | |
| 日期与时间 | $now | 当前日期和 时间 |
$today | 今天的日期 | |
$now.toFormat("yyyy-MM-dd") | 将当前日期格式化为字符串 | |
| 条件判断 | $if(condition, "true", "false") | 根据条件为真或假返回相应值的辅助函数 |
condition ? true : false | 三元运算符:条件为真时返回一个值,为假时返回另一个值 | |
$ifEmpty(value, defaultValue) | 此辅助函数接收两个参数,检查第一个参数是否为空;不为空时返回第一个参数,为空时返回第二个参数。以下情况视为空:undefined、null、空字符串 ''、调用 value.length 返回 false 的数组,或调用 Object.keys(value).length 返回 false 的对象。 | |
| 字符串方法 | text.toUpperCase() | 转换为大写 |
text.toLowerCase() | 转换为小写 | |
text.includes("foo") | 检查文本是否包含搜索内容 | |
text.extractEmail() | 从文本中提取电子邮件地址 | |
| 数组方法 | array.length | 获取数组长度 |
array.join(", ") | 使用逗号作为分隔符连接数组元素 | |
array.filter(x => x <= 20) | 根据过滤条件筛选数组元素 | |
array.map(x => x.id) | 转换数组元素 |
下方表格按操作对象的数据类型列出了方法。点击方法名称,可查看详细文档。
Array(数组)
-
Array.append(elem1, elem2?, ..., elemN?)将新元素添加到数组末尾。与
push()类似,但返回修改后的数组。也可以考虑改用展开语法,参见示例。 -
返回数组中数字的平均值。如果存在非数字元素,则抛出错误。
-
将数组拆分为由指定长度的子数组组成的数组。
-
删除数组中的空值。
null、""和undefined均视为空。 -
Array.concat(array2, array3?, ... arrayN?)将一个或多个数组连接到基础数组末尾。
-
比较两个数组。返回基础数组中存在、但未包含在
otherArray中的所有元素。 -
Array.filter(function(element, index?, array?), thisValue?)返回仅包含满足条件的元素的数组。条件是一个返回
true或false的函数。 -
Array.find(function(element, index?, array?), thisValue?)返回数组中满足指定条件的第一个元素。条件是一个返回
true或false的函数。如果没有匹配项,则返回undefined。
如果需要所有匹配的元素,请使用 filter()。
-
返回数组的第一个元素。
-
Array.includes(element, start?)返回
true表示数组包含指定元素。 -
Array.indexOf(element, start?)返回数组中第一个匹配元素的位置,未找到时返回 -1。位置从 0 开始。
-
Array.intersection(otherArray)比较两个数组。返回基础数组中也存在于另一个数组中的所有元素。
-
返回
true的情况是数组没有元素,或数组为null或undefined。 -
返回
true表示数组至少包含一个元素。 -
将数组中的所有元素合并为一个字符串,可选择在各元素之间插入分隔符。
与 split() 的作用相反。
-
返回数组的最后一个元素。
-
数组中的元素数量。
-
Array.map(function(element, index?, array?), thisValue?)对原数组中的每个元素应用一个函数,创建新数组。
-
返回数组中的最大数字。如果存在非数字元素,则抛出错误。
-
返回数组中的最小数字。如果存在非数字元素,则抛出错误。
-
Array.pluck(fieldName1?, fieldName2?, …)返回一个数组,其中包含原数组中各对象的指定字段值。忽略非对象元素,以及没有与指定字段名匹配的键的对象。
-
返回从数组中随机选择的一个元素。
-
Array.reduce(function(prevResult, currentElem, currentIndex?, array?), initResult)对数组中的每个元素应用一个函数,将数组归约为单个值。该函数将当前元素与之前元素的归约结果结合,生成新的结果。
-
删除数组中重复出现的元素。
-
修改数组中各对象的所有匹配键(字段名)。如需重命名多个键,可以 添加更多参数,即
from1, to1, from2, to2, ...。 -
反转数组中元素的顺序。
-
返回数组中从
start索引开始,到end索引之前的一段元素,不包含结束索引处的元素。索引从 0 开始。 -
Array.smartJoin(keyField, nameField)根据对象数组创建单个对象。数组中的每个对象为返回对象提供一个字段。数组中的每个对象都必须包含一个提供键名的字段和一个提供值的字段。
-
Array.sort(compareFunction(a, b)?)对数组中的元素重新排序。按字母顺序排列字符串时,不需要参数。数字或对象的排序方法请参阅示例。
-
返回数组中所有数字的总和。如果存在非数字元素,则抛出错误。
-
将数组转换为 JSON 字符串。与 JavaScript 的
JSON.stringify()相同。 -
Array.toSpliced(start, deleteCount, elem1, ....., elemN)在指定位置添加或删除数组元素。
另请参阅 slice() 和 append()。
-
将数组转换为字符串,各值以逗号分隔。如果要使用其他分隔符,请使用
join()。 -
连接两个数组,并删除重复元素。
-
删除数组中的重复元素。
BinaryFile(二进制文件)
-
文件所在目录的路径,可用于区分不同目录中的同名文件。如果 n8n 配置为将文件存储在数据库中,则不设置此值。
-
文件名末尾的后缀,例如
txt。 -
文件名,包含扩展名。
-
表示文件大小的字符串。
-
表示文件类型的字符串,例如
image。对应 MIME 类型的第一部分。 -
文件的唯一 ID。当文件存储在磁盘或 S3 等存储服务中时,用于标识该文件。
-
表示文件内容格式的字符串,例如
image/jpeg。
Boolean(布尔值)
-
返回
true的情况是布尔值为false、null或undefined;返回false的 情况是布尔值为true。 -
返回
true的情况是布尔值为true;返回false的情况是布尔值为false、null或undefined。结果与isEmpty()相反。 -
将
true转换为 1,将false转换为 0。 -
将
true转换为字符串 ‘true’,将false转换为字符串 ‘false’。
CustomData(自定义数据)
-
$execution.customData.get(key)返回存储在指定键下的自定义执行数据。更多信息
-
$execution.customData.getAll()返回当前执行中已设置的所有自定义数据键值对。更多信息
-
$execution.customData.set(key, value)将自定义执行数据存储在指定的键下,便于按这些数据筛选执行记录。更多信息
-
$execution.customData.setAll(obj)为本次执行设置多组自定义数据键值对,便于按这些数据筛选执行记录。更多信息
Date(日期)
-
将 JavaScript Date 转换为 Luxon DateTime。DateTime 包含相同的信息,但更易于操作。
DateTime(日期时间)
-
一个月中的第几天,取值为 1–31。
-
DateTime.diffTo(otherDateTime, unit)以指定单位返回两个 DateTime 之间的差值。
-
以指定单位返回当前时刻与该 DateTime 之间的差值。如果需要文本形式,请使用
toRelative()。 -
将 DateTime 向上调整到指定单位的结束时刻,例如月末。
-
返回
true表示两个 DateTime 代表完全相同的时刻,且时区相同。如需较宽松的比较,请使用hasSame()。 -
以数字形式提取日期或时间的某一部分,例如月份。如需提取文本名称,请参阅
format()。 -
使用指定格式将 DateTime 转换为字符串。参阅格式化指南。对于常见格式,使用
toLocaleString()可能更方便。 -
DateTime.hasSame(otherDateTime, unit)返回
true表示两个 DateTime 在指定单位及更大单位上相同。忽略时区,仅比较本地时间,因此必要时请先使用toUTC()。 -
一天中的小时数,取值为 0–23。
-
DateTime.isBetween(date1, date2)返回
true表示 DateTime 位于指定的两个时刻之间。 -
对所有 DateTime 返回
false。返回true的情况是值为null或undefined。 -
DateTime 是否处于夏令时。
-
对所有 DateTime 返回
true。返回false的情况是值为null或undefined。 -
DateTime 的区域设置,例如 ‘en-GB’。格式化 DateTime 时会使用该区域设置。
-
一秒中的毫秒数,取值为 0–999。
-
从 DateTime 中减去指定时长。
-
一小时中的分钟数,取值为 0–59。
-
月份,取值为 1–12。
-
完整的月份名称,例如 ‘October’。未指定区域设置时,默认使用系统区域设置。
-
缩写的月份名称,例如 ‘Oct’。未指定区域设置时,默认使用系统区域设置。
-
为 DateTime 加上指定时长。
-
一年中的季度,取值为 1–4。
-
一分钟中的秒数,取值为 0–59。
-
为 DateTime 的指定单位赋予新值。如需将 DateTime 调整到单位起点或终点,另请参阅
startOf()和endOf()。 -
设置区域,决定 DateTime 使用的语言和格式。生成 DateTime 的文本表示时很有用,例如使用
format()或toLocaleString()时。 -
将 DateTime 转换为指定时区。除非通过选项另行指定,DateTime 仍表示同一时刻。另请参阅
toLocal()和toUTC()。 -
将 DateTime 向下调整到指定单位的起始时刻,例如月初。
-
返回符合 ISO 8601 标准的 DateTime 字符串表示。
-
将 DateTime 转换为工作流的本地时区。除非通过参数另行指定,DateTime 仍表示同一时刻。可以在工作流设置中设置时区。
-
DateTime.toLocaleString(formatOpts)返回 DateTime 的本地化字符串,即使用对应区域的语言和格式。未指定区域时,默认使用系统区域设置。
-
返回以毫秒为单位的 Unix 时间戳,即自 1970 年 1 月 1 日起经过的毫秒数。
-
返回相对于当前时刻的时间文本,例如 ‘in two days’(两天后)。默认向下取整。
-
返回以秒为单位的 Unix 时间戳,即自 1970 年 1 月 1 日起经过的秒数。
-
返回 DateTime 的字符串表示,与
toISO()类似。更多格式化选项请参阅format()或toLocaleString()。 -
将 DateTime 转换为 UTC 时区。除非通过参数另行指定,DateTime 仍表示同一时刻。转换到其他时区请使用
setZone()。 -
星期几。1 表示星期一,7 表示星期日。
-
完整的星期名称,例如 ‘Wednesday’。未指定区域设置时,默认使用系统区域设置。
-
缩写的星期名称,例如 ‘Wed’。未指定区域设置时,默认使用系统区域设置。
-
一年中的周数,大致取值为 1–52。
-
年份。
-
与 DateTime 关联的时区。
ExecData(执行数据)
-
设置和获取自定义执行数据,例如用于筛选执行记录。也可以通过 Execution Data 节点完成这些操作。更多信息
-
当前工作流执行的 ID。
-
可能为以下三个值之一:
test(通过点击 n8n 中的按钮触发执行)、production(自动触发执行)。运行工作流测试时,使用evaluation。 -
访问 Wait 节点所生成表单的 URL。
-
用于恢复在 Wait 节点处等待的工作流的 Webhook URL。
HTTPResponse(HTTP 响应)
-
最近一次 HTTP 调用的响应对象的正文。仅在 HTTP Request 节点中可用。
-
最近一次 HTTP 调用返回的响应头。仅在 HTTP Request 节点中可用。
-
最近一次 HTTP 调用返回的 HTTP 状态码。仅在 HTTP Request 节点中可用。
-
关于请求状态的可选消息。仅在 HTTP Request 节点中可用。
Item(数据项)
-
返回数据项包含的所有二进制数据。
-
返回数据项包含的 JSON 数据。更多信息
NodeInputData(节点输入数据)
-
$input.all(branchIndex?, runIndex?)返回当前节点输入数据项组成的数组。
-
$input.first(branchIndex?, runIndex?)返回当前节点的第一个输入数据项。
-
返回当前正在处理的输入数据项。
-
$input.last(branchIndex?, runIndex?)返回当前节点的最后一个输入数据项。
-
当前节点的配置,即配置节点时填写的参数,例如要执行的操作。
NodeOutputData(节点输出数据)
-
$().all(branchIndex?, runIndex?)返回节点输出数据项组成的数组。
-
$().first(branchIndex?, runIndex?)返回节点输出的第一个数据项。
-
节点已执行时为
true,否则为false。 -
返回匹配的数据项,也就是用于生成当前节点中当前数据项的那个数据项。更多信息
-
$().itemMatching(currentItemIndex?)返回匹配的数据项,也就是用于生成当前节点中指定索引处数据项的那个数据项。更多信息
-
$().last(branchIndex?, runIndex?)返回节点输出的最后一个数据项。
-
指定节点的配置,即在节点界面中填写的参数,例如要执行的操作。
Number(数字)
-
返回数字的绝对值,即去掉负号。
-
将数字向上取整。
-
将数字向下取整。
-
Number.format(locale?, options?)返回表示该数字的格式化字符串,适合按特定语言或货币格式显示数字。与
Intl.NumberFormat()相同。 -
返回
true的情况是数字为0、NaN、null或undefined。其他数字均返回false。 -
返回
true表示该数字是偶数。如果数字不是整数,则抛出错误。 -
返回
true表示该数字是整数。 -
返回
true的数字包括除0和NaN之外的所有数字。返回false的情况是数字为0、NaN、null或undefined。结果与isEmpty()相反。 -
返回
true表示该数字是奇数。如果数字不是整数,则抛出错误。 -
返回四舍五入到最接近的整数或指定小数位数后的数字。
-
将数字转换为布尔值。
0转换为false,其他值均转换为true。 -
将数字时间戳转换为 DateTime。如果时间戳的单位不是毫秒,必须指定其格式。使用 n8n 的时区或工作流设置中的时区。
-
Number.toLocaleString(locales?, options?)返回表示该数字的本地化字符串,即使用对应区域的语言和格式。未指定区域时,默认使用系统区域设置。
-
将数字转换为简单的文本表示形式。更多格式化选项请参阅
toLocaleString()。
Object(对象)
-
删除所有值为空的字段,即值为
null或""的字段。 -
返回
true表示存在名为name的字段。仅检查顶层键,比较时区分大小写。 -
返回
true的情况是对象没有设置任何键(字段),或对象为null或undefined。 -
返回
true表示对象至少设置了一个键(字段)。 -
Object.keepFieldsContaining(value)删除值与指定
value完全不匹配 的字段;至少部分匹配的字段予以保留。比较时区分大小写,值不是字符串的字段始终会被删除。 -
返回包含对象所有字段名(键)的数组。与 JavaScript 的
Object.keys(obj)相同。 -
将两个对象合并为一个。如果两个对象中存在相同的键(字段名),则使用第一个对象(基础对象)中的值。
-
从对象中删除一个字段。与 JavaScript 的
delete相同。 -
Object.removeFieldsContaining(value)删除值与指定
value至少部分匹配的键(字段)。比较时区分大小写,值不是字符串的字段始终会被保留。 -
将对象转换为 JSON 字符串。与 JavaScript 的
JSON.stringify()类似。 -
根据对象的键和值生成 URL 参 数字符串,仅支持顶层键。
-
返回包含对象所有字段值的数组。与 JavaScript 的
Object.values(obj)相同。
PrevNodeData(前一节点数据)
-
提供当前输入的节点名称。
如果当前节点有多个输入连接点(例如 Merge 节点),始终使用第一个输入连接点。
-
提供当前输入的输出连接点索引。前一个节点有多个输出时(例如 If 或 Switch 节点),可以使用此值。
如果当前节点有多个输入连接点(例如 Merge 节点),始终使用第一个输入连接点。
-
前一个节点生成当前输入时的运行次数索引。
如果当前节点有多个输入连接点(例如 Merge 节点),始终使用第一个输入连接点。
Root(全局变量与函数)
-
返回指定节点的数据。
-
返回当前节点中当前数据项的二进制输入数据,是
$input.item.binary的简写。 -
获取或设置当前执行的元数据。
-
$fromAI(key, description?, type?, defaultValue?)当节点参数的值应由大语言模型提供时使用。建议提供说明,以获得更好的结果。
-
$if(condition, valueIfTrue, valueIfFalse)根据
condition返回两个值中的一个,与 JavaScript 的?运算符类似。 -
如果第一个参数不为空,则返回第一个参数,否则返回第二个参数。以下值视为空:
””、[]、{}、null、undefined。 -
当前节点的输入数据。
-
当前正在处理的数据项在输入数据项列表中的位置。
-
使用 JMESPath 表达式从对象或对象数组中提取数据,适合查询复杂的嵌套对象。如果表达式无效,则返回
undefined。 -
返回当前节点中当前数据项的 JSON 输入数据,是
$input.item.json的简写。更多信息 -
返回给定数字中的最大值。
-
返回给定数字中的最小值。
-
当前节点的版本,显示在节点设置面板底部。
-
表示当前时 刻的 DateTime。
使用工作流的时区,可以在工作流设置中修改。
-
节点已获取的结果页数,仅在 HTTP Request 节点中可用。
-
当前节点的配置,即在节点界面中填写的参数,例如要执行的操作。
-
关于提供当前输入的节点的信息。
在 Merge 节点中,始终使用第一个输入连接点。
-
节点最近一次运行时发送的请求对象,仅在 HTTP Request 节点中可用。
-
最近一次 HTTP 调用返回的响应,仅在 HTTP Request 节点中可用。
-
当前节点本次执行中当前运行的索引,从 0 开始。
-
如果已配置外部密钥库,则提供其中的密钥。密钥值不会向用户显示,仅在凭据字段中可用。
-
表示当天起始午夜时刻的 DateTime。
使用实例的时区,除非工作流设置覆盖了该时区。
String(字符串)
-
将 base64 编码的字符串转换为纯文本。
-
将纯文本转换为 base64 编码的字符串。
-
String.concat(string1, string2?, ..., stringN?)将一个或多个字符串连接到基础字符串末尾。也可以使用
+运算符,参见示例。 -
如果字符串是电子邮件地址或 URL,则返回其域名;未找到时返回
undefined。
如果字符串还包含其他内容,可以先尝试使用 extractEmail() 或 extractUrl()。
-
提取字符串中找到的第一个电子邮件地址。未找到时返回
undefined。 -
提取字符串中找到的第一个 URL。未找到时返回
undefined。仅识别完整的 URL,例如以http开头的 URL。 -
返回 URL 中域名之后的部分,未找到 URL 时返回
undefined。
如果字符串还包含其他内容,可以先尝试使用 extractUrl()。
-
返回使用指定算法计算出的字符串哈希值。未指定时,默认使用 md5。
-
String.includes(searchString, start?)返回
true表示字符串包含searchString,区分大小写。 -
String.indexOf(searchString, start?)返回
searchString在基础字符串中首次出现的索引(位置),未找到时返回 -1,区分大小写。 -
返回
true表示字符串是域名。 -
返回
true表示字符串是电子邮件地址。 -
返回
true的情况是字符串没有字符,或值为null或undefined。 -
返回
true表示字符串至少包含一个字符。 -
返回
true表示字符串表示一个数字。 -
返回
true表示字符串是有效的 URL。 -
字符串中的字符数量。
-
使用正则表达式匹配字符串。返回包含第一个匹配结果的数组;如果正则表达式设置了
g标志,则返回所有匹配结果。未找到匹配项时返回null。
如果只需检查文本是否存在,可以考虑改用 includes()。
-
返回字符串所表示的 JavaScript 对象或值。如果字符串不是有效的 JSON,则返回
undefined。不支持使用单引号的 JSON。 -
为字符串加上引号,并转义字符串中已有的引号。适用于构造 JSON、SQL 等内容。
-
删除字符串中的所有 Markdown 格式,同时删除 HTML 标签。
-
删除字符串中的标签,例如 HTML 或 XML 标签。
-
String.replace(pattern, replacement)返回一个字符串,其中首次出现的
pattern被替换为replacement。
如需替换所有出现的位置,请使用 replaceAll()。
-
String.replaceAll(pattern, replacement)返回一个字符串,其中所有出现的
pattern均被替换为replacement。 -
将字符串中的特殊字符替换为最接近的 ASCII 字符。
-
返回模式在字符串中首次出现的索引(位置),未找到时返回 -1。模式使用正则表达式指定。如需使用文本查找,请参阅
indexOf()。 -
从指定位置提 取字符串片段。更复杂的提取方式请参阅
match()。 -
String.split(separator?, limit?)将字符串拆分为子字符串数组。每次都在
separator处拆分,输出不包含分隔符。
与在数组上使用 join() 的作用相反。
-
String.startsWith(searchString, start?)返回
true表示字符串以searchString开头,区分大小写。 -
从指定位置提取字符串片段。更复杂的提取方式请参阅
match()。 -
将字符串转换为布尔值。
0、false和no转换为false,其他值均转换为true,不区分大小写。 -
将字符串转换为 DateTime,便于进一步转换。支持的字符串格式包括 ISO 8601、HTTP、RFC2822、SQL 和以毫秒为单位的 Unix 时间戳。
如需解析其他格式,请使用 DateTime.fromFormat()。
-
处理字符串,使其可插入 JSON 对象:转义引号和特殊字符,例如换行符,并为字符串加上引号。
与 JavaScript 的 JSON.stringify() 相同。
-
将字符串中的所有字母转换为小写。
-
将表示数字的字符串转换为数字。如果字符串不是以有效数字开头,则抛出错误。
-
将字符串转换为句首大写形式,每个句子的首字母大写,其余字母小写。
-
将字符串转换为蛇形命名形式:空格和连字符替换为
_,删除符号,所有字母转换为小写。 -
将字符串转换为标题大小写形式。每个单词的首字母大写,其余字母保持原样。较短的介词和连词不大写,例如 ‘a’、‘the’。
-
将字符串中的所有字母转换为大写。
-
删除字符串两端的空白字符,包括换行符、制表符、空格等。
-
对 URL 编码的字符串进行解码,将
%XX形式的字符编码替换为对应字符。 -
对字符串进行编码,使其可用于 URL。空格和特殊字符替换为
%XX形式的编码。
WorkflowData(工作流数据)
-
工作流是否处于激活状态。
-
工作流 ID,也可以从工作流 URL 中找到。
-
工作流名称,即编辑器顶部显示的名称。