表达参考(Expression Reference)#
这些是一些常用表达。下面出现了一个更全面的列表。
🌐 These are some commonly used expressions. A more exhaustive list appears below.
| 类别 | 表达 | 描述 |
|---|---|---|
| 访问当前输入项数据 | $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) | 转换数组中的项目 |
浏览下表以根据它们作用的数据类型查找方法。点击方法名称以阅读其详细文档。
🌐 Browse the tables below to find methods by the data type on which they act. Click a method name to read detailed documentation for it.
数组(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)比较两个数组。返回基础数组中也存在于另一个数组的所有元素。
-
如果数组没有元素或为
null,则返回true -
如果数组至少有一个元素,则返回
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索引结束(但不包括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)#
-
对所有布尔值返回
false。对null返回true。 -
将
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 日期转换为 Luxon DateTime。DateTime 包含相同的信息,但更易于操作。
DateTime#
-
月份中的天数(1-31)
-
DateTime.diffTo(otherDateTime, unit)返回两个日期时间的差值,以指定的单位表示
-
返回当前时刻与指定 DateTime 之间的差值,以给定的单位表示。若需要文本表示,请改用
toRelative()。 -
将日期时间向上舍入到其某个单位的结束,例如月份末
-
如果两个 DateTime 表示完全相同的时刻并且在相同的时区,则返回
true。对于不那么严格的比较,请使用hasSame()。 -
提取日期或时间的一部分,例如以数字形式提取月份。要提取文本名称,请参见
format()。 -
将 DateTime 转换为字符串,使用指定的格式。 格式指南。对于常见格式,
toLocaleString()可能更简单。 -
DateTime.hasSame(otherDateTime, unit)如果两个 DateTime 在指定单位上相同,则返回
true。时区会被忽略(仅比较本地时间),因此如有需要,请先使用toUTC()。 -
一天中的小时(0-23)
-
DateTime.isBetween(date1, date2)如果 DateTime 位于指定的两个时间点之间,则返回
true -
日期时间是否处于夏令时
-
DateTime 的区域设置,例如 'en-GB'。区域设置在格式化 DateTime 时使用。
-
秒的毫秒(0-999)
-
从日期时间中减去给定的时间段
-
小时的分钟(0-59)
-
月份(1-12)
-
文本形式的长月份名称,例如 'October'。如果未指定语言环境,则默认为系统的语言环境。
-
文本缩写的月份名称,例如 'Oct'。如果未指定语言环境,则默认为系统的语言环境。
-
将给定的时间段添加到日期时间
-
一年中的季度(1-4)
-
分钟的秒数(0-59)
-
为 DateTime 的指定单位分配新值。要对 DateTime 进行四舍五入,请参见
startOf()和endOf()。 -
设置区域设置,这将决定日期时间的语言和格式。当生成日期时间的文本表示时非常有用,例如使用
format()或toLocaleString()。 -
将 DateTime 转换为指定的时区。除非在选项中另有指定,否则 DateTime 仍然表示相同的时刻。另请参见
toLocal()和toUTC()。 -
将 DateTime 向下舍入到其某个单位的开始,例如月初
-
返回符合 ISO 8601 的 DateTime 字符串表示
-
将 DateTime 转换为工作流的本地时区。除非在参数中另有指定,DateTime 仍表示同一时刻。工作流的时区可以在工作流设置中进行设置。
-
DateTime.toLocaleString(formatOpts)返回表示 DateTime 的本地化字符串,即以其区域设置对应的语言和格式表示。如果未指定,则默认为系统的区域设置。
-
返回以毫秒为单位的 Unix 时间戳(自 1970 年 1 月 1 日以来经过的时间)
-
返回相对于现在的时间的文本表示,例如‘两天后’。默认情况下向下取整。
-
返回以秒为单位的 Unix 时间戳(自1970年1月1日以来经过的秒数)
-
返回 DateTime 的字符串表示形式。类似于
toISO()。有关更多格式选项,请参见format()或toLocaleString()。 -
将 DateTime 转换为 UTC 时区。除非在参数中指定,否则 DateTime 仍然表示同一时刻。使用
setZone()可转换到其他时区。 -
星期几。1 是星期一,7 是星期日。
-
文本形式的长星期名称,例如 'Wednesday'。如果未指定语言环境,则默认为系统的语言环境。
-
文本缩写的星期名称,例如 'Wed'。如果未指定语言环境,则默认为系统的语言环境。
-
一年中的周数(大约1-52)
-
那一年
-
与日期时间关联的时区
ExecData#
-
设置和获取自定义执行数据(例如,用于筛选执行)。你也可以使用“执行数据”节点来完成此操作。 更多信息
-
当前工作流执行的 ID
-
可以是三个值之一:
test(表示执行是通过点击 n8n 中的按钮触发的)或production(表示执行是自动触发的)。在运行工作流测试时,使用evaluation。 -
访问由 “等待”节点生成的表单的URL。
-
要调用的 webhook URL,以恢复在 ‘等待’节点处等待的工作流。
HTTP响应(HTTPResponse)#
-
上一次 HTTP 调用中响应对象的主体。仅在“HTTP 请求”节点中可用
-
最后一次 HTTP 调用返回的头信息。仅在“HTTP 请求”节点中可用。
-
上一次 HTTP 调用返回的 HTTP 状态码。仅在“HTTP 请求”节点中可用。
-
关于请求状态的可选消息。仅在“HTTP 请求”节点中可用。
项目(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()相同。 -
对所有数字返回
false。对null返回true。 -
如果数字是偶数,则返回
true。如果数字不是整数,则抛出错误。 -
如果该数字是整数,则返回
true -
如果数字是奇数,则返回
true。如果数字不是整数,则抛出错误。 -
返回四舍五入到最接近的整数(或指定的小数位数)的数字
-
将数字转换为布尔值。
0变为false;其他所有值变为true。 -
将数值时间戳转换为日期时间。如果时间戳不是以毫秒为单位,则必须指定其格式。使用 n8n 中的时区(或工作流设置中的时区)。
-
Number.toLocaleString(locales?, options?)返回表示该数字的本地化字符串,即对应其区域设置的语言和格式。如果未指定,则默认使用系统的区域设置。
-
将数字转换为简单的文本表示。有关更多格式选项,请参见
toLocaleString()。
对象(Object)#
-
删除所有值为空的字段,即
null或"" -
如果存在名为
name的字段,则返回true。仅检查顶层键。比较区分大小写。 -
如果对象没有设置任何键(字段)或为
null,则返回true -
如果对象至少有一个键(字段)被设置,则返回
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#
-
当前输入来源的节点名称。
如果有多个输入(例如在“合并”节点中),始终使用当前节点的第一个输入连接器。
🌐 Always uses the current node’s first input connector if there is more than one (e.g. in the ‘Merge’ node).
-
当前输入来自的输出连接器的索引。当上一个节点有多个输出(例如 ‘If’ 或 ‘Switch’ 节点)时使用此索引。
如果有多个输入(例如在“合并”节点中),始终使用当前节点的第一个输入连接器。
🌐 Always uses the current node’s first input connector if there is more than one (e.g. in the ‘Merge’ node).
-
生成当前输入的前一个节点的运行。
如果有多个输入(例如在“合并”节点中),始终使用当前节点的第一个输入连接器。
🌐 Always uses the current node’s first input connector if there is more than one (e.g. in the ‘Merge’ node).
根(Root)#
-
返回指定节点的数据
-
将任何二进制输入数据返回到当前节点,用于当前项目。是
$input.item.binary的简写。 -
检索或设置当前执行的元数据
-
$fromAI(key, description?, type?, defaultValue?)当大型语言模型应提供节点参数的值时使用。考虑提供描述以获得更好的结果。
-
$if(condition, valueIfTrue, valueIfFalse)根据
condition返回两个值中的一个。类似于JavaScript中的?运算符。 -
如果第一个参数不为空,则返回第一个参数,否则返回第二个参数。以下被视为空:
""、[]、{}、null、undefined -
当前节点的输入数据
-
当前正在处理的项在输入项列表中的位置
-
使用 JMESPath 表达式从对象(或对象数组)中提取数据。对于查询复杂的嵌套对象非常有用。如果表达式无效,则返回
undefined。 -
将 JSON 输入数据返回到当前节点,用于当前项目。
$input.item.json的简写。 更多信息 -
返回给定数字中的最大值
-
返回给定数字中最小的一个
-
当前节点的版本(显示在节点设置面板底部)
-
表示当前时刻的日期时间。
使用工作流的时区(可以在工作流设置中更改)。
🌐 Uses the workflow’s time zone (which can be changed in the workflow settings).
-
节点已获取的结果页面数量。仅在“HTTP 请求”节点中可用。
-
当前节点的配置设置。这些是你在节点的用户界面中填写的参数(例如其操作)。
-
有关当前输入来源节点的信息。
在“合并”节点中,总是使用第一个输入连接器。
🌐 When in a ‘Merge’ node, always uses the first input connector.
-
在节点上次运行期间发送的请求对象。仅在“HTTP 请求”节点中可用。
-
最后一次 HTTP 调用返回的响应。仅在“HTTP 请求”节点中可用。
-
当前节点执行的当前运行的索引。从0开始。
-
来自 外部秘密仓库的秘密,如果已配置。秘密值永远不会显示给用户。仅在凭证字段中可用。
-
表示当前日期开始时的午夜的日期时间。
使用实例的时区(除非在工作流设置中被覆盖)。
🌐 Uses the instance’s time zone (unless overridden in the workflow’s settings).
字符串(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?)如果字符串包含
searchString,则返回true。区分大小写。 -
String.indexOf(searchString, start?)返回
searchString在基础字符串中首次出现的索引(位置),如果未找到则返回 -1。区分大小写。 -
如果字符串是域名,则返回
true -
如果字符串是电子邮件,则返回
true -
如果字符串没有字符或为
null,则返回true -
如果字符串至少有一个字符,则返回
true -
如果字符串表示一个数字,则返回
true -
如果字符串是有效的 URL,则返回
true -
字符串中的字符数
-
将字符串与 正则表达式进行匹配。如果正则表达式中设置了
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?)如果字符串以
searchString开头,则返回true。区分大小写。 -
在给定位置提取字符串的片段。有关更高级的提取,请参见
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 中找到。
-
工作流的名称,如编辑器顶部所示