表达式参考#
以下是一些常用表达式。更完整的列表见下方。
| 分类 | 表达式 | 描述 |
|---|---|---|
| 访问当前输入数据项的数据 | $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 的对象 |
|
| String 方法 | text.toUpperCase() |
转换为大写 |
text.toLowerCase() |
转换为小写 | |
text.includes("foo") |
检查文本是否包含搜索词 | |
text.extractEmail() |
从文本中提取电子邮件 | |
| Array 方法 | 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)比较两个数组。返回基础数组中同时存在于另一个数组中的所有元素。
-
如果数组没有元素或为
null则返回true -
如果数组至少有一个元素则返回
true -
将数组的所有元素合并为一个字符串,每个元素之间可以使用可选的分隔符。
与 split() 相反。
-
返回数组的最后一个元素
-
数组中的元素数量
-
Array.map(function(element, index?, array?), thisValue?)通过对原始数组的每个元素应用函数来创建新数组
-
返回数组中最大的数字。如果存在非数字元素则抛出错误。
-
返回数组中最小的数字。如果存在非数字元素则抛出错误。
-
Array.pluck(fieldName1?, fieldName2?, …)返回一个数组,包含数组中每个 Object 的给定字段的值。忽略不是 Object 或没有匹配字段名的数组元素。
-
从数组中随机返回一个元素
-
Array.reduce(function(prevResult, currentElem, currentIndex?, array?), initResult)通过对每个元素应用函数将数组归约为单个值。该函数将当前元素与之前元素的归约结果组合,产生新的结果。
-
移除数组中重复出现的元素
-
更改数组中所有 Object 的匹配键(字段名)。通过添加额外参数可以重命名多个键,即
from1, to1, from2, to2, ...。 -
反转数组中元素的顺序
-
返回数组的一部分,从
start索引到end索引(不包含)。索引从 0 开始。 -
Array.smartJoin(keyField, nameField)从 Object 数组创建单个 Object。数组中的每个 Object 为返回的 Object 提供一个字段。数组中的每个 Object 必须包含一个键名字段和一个值字段。
-
Array.sort(compareFunction(a, b)?)重新排列数组中的元素。按字母顺序排列字符串时无需参数。排序数字或 Object 请参见示例。
-
返回数组中所有数字的总和。如果存在非数字元素则抛出错误。
-
将数组转换为 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 Date 转换为 Luxon DateTime。DateTime 包含相同的信息,但更易于操作。
DateTime#
-
月份中的第几天(1-31)
-
DateTime.diffTo(otherDateTime, unit)返回两个 DateTime 之间的差值,以给定的单位表示
-
返回当前时刻与 DateTime 之间的差值,以给定的单位表示。如需文本表示,请改用
toRelative()。 -
将 DateTime 向上舍入到其某个单位的末尾,例如月末
-
如果两个 DateTime 表示完全相同的时刻且在相同的时区中则返回
true。如需不那么严格的比较,请使用hasSame()。 -
提取日期或时间的某个部分(例如月份)作为数字。要提取文本名称,请参阅
format()。 -
使用指定的格式将 DateTime 转换为字符串。格式化指南。对于常见格式,
toLocaleString()可能更简单。 -
DateTime.hasSame(otherDateTime, unit)如果两个 DateTime 在指定的单位精度下相同则返回
true。时区被忽略(仅比较本地时间),如有需要请先使用toUTC()。 -
一天中的小时(0-23)
-
DateTime.isBetween(date1, date2)如果 DateTime 位于指定的两个时刻之间则返回
true -
DateTime 是否处于夏令时
-
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 向下舍入到其某个单位的开始,例如月初
-
返回 DateTime 的 ISO 8601 兼容字符串表示
-
将 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)
-
年份
-
与 DateTime 关联的时区
ExecData#
-
设置和获取自定义执行数据(例如用于筛选执行记录)。你也可以使用 'Execution Data' 节点来实现。更多信息
-
当前工作流执行的 ID
-
可以是 3 个值之一:
test(表示执行是通过在 n8n 中点击按钮触发的)或production(表示执行是自动触发的)。运行工作流测试时使用evaluation。 -
访问由 'Wait' 节点生成的表单的 URL。
-
用于恢复在 'Wait' 节点处等待的工作流的 webhook URL。
HTTPResponse#
-
上次 HTTP 调用的响应对象的 body。仅在 'HTTP Request' 节点中可用
-
上次 HTTP 调用返回的 headers。仅在 '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?)返回节点输出的最后一个数据项
-
给定节点的配置设置。这些是你在节点 UI 中填写的参数(例如其操作)。
Number#
-
返回数字的绝对值,即去除负号
-
将数字向上舍入到下一个整数
-
将数字向下舍入到最近的整数
-
Number.format(locale?, options?)返回表示该数字的格式化字符串。用于针对特定语言或货币进行格式化。与
Intl.NumberFormat()相同。 -
对所有数字返回
false。对null返回true。 -
如果数字是偶数则返回
true。如果数字不是整数则抛出错误。 -
如果数字是整数则返回
true -
如果数字是奇数则返回
true。如果数字不是整数则抛出错误。 -
返回舍入到最近整数(或指定小数位数)的数字
-
将数字转换为布尔值。
0变为false;其他值变为true。 -
将数字时间戳转换为 DateTime。如果时间戳不是毫秒格式,则必须指定格式。使用 n8n 中的时区(或工作流设置中的时区)。
-
Number.toLocaleString(locales?, options?)返回表示该数字的本地化字符串,即以其区域设置对应的语言和格式显示。如果未指定区域设置,则默认使用系统的区域设置。
-
将数字转换为简单的文本表示。更多格式化选项请参阅
toLocaleString()。
Object#
-
移除所有值为空的字段,即值为
null或""的字段 -
如果存在名为
name的字段则返回true。仅检查顶层键。比较区分大小写。 -
如果 Object 没有设置任何键(字段)或为
null则返回true -
如果 Object 至少设置了一个键(字段)则返回
true -
Object.keepFieldsContaining(value)移除值与给定
value不至少部分匹配的字段。比较区分大小写。非字符串的字段将始终被移除。 -
返回包含对象所有字段名(键)的数组。与 JavaScript 的
Object.keys(obj)相同。 -
将两个 Object 合并为一个。如果某个键(字段名)在两个 Object 中都存在,则使用第一个(基础)Object 的值。
-
从 Object 中移除一个字段。与 JavaScript 的
delete相同。 -
Object.removeFieldsContaining(value)移除值与给定
value至少部分匹配的键(字段)。比较区分大小写。非字符串的字段始终保留。 -
将 Object 转换为 JSON 字符串。类似于 JavaScript 的
JSON.stringify()。 -
从 Object 的键和值生成 URL 参数字符串。仅支持顶层键。
-
返回包含 Object 所有字段值的数组。与 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' 节点中可用。
-
当前节点的配置设置。这些是你在节点 UI 中填写的参数(例如其操作)。
-
关于当前输入来自的节点的信息。
在 '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 则返回
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 Object 或值,如果字符串不是有效的 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 中找到。
-
工作流的名称,显示在编辑器顶部