Skip to content

表达式参考#

以下是一些常用表达式。更完整的列表见下方。

分类 表达式 描述
访问当前输入数据项的数据 $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) 辅助函数,接受两个参数,检查第一个参数是否为空,然后返回该参数(如果不为空)或第二个参数(如果第一个为空)。以下情况视为空:undefinednull、空字符串 ''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#

如果需要所有匹配的元素,请使用 filter()

split() 相反。

另请参阅 slice()append()

BinaryFile#

Boolean#

CustomData#

Date#

  • Date.toDateTime()

    将 JavaScript Date 转换为 Luxon DateTime。DateTime 包含相同的信息,但更易于操作。

DateTime#

ExecData#

  • $exec.customData

    设置和获取自定义执行数据(例如用于筛选执行记录)。你也可以使用 'Execution Data' 节点来实现。更多信息

  • $exec.id

    当前工作流执行的 ID

  • $exec.mode

    可以是 3 个值之一:test(表示执行是通过在 n8n 中点击按钮触发的)或 production(表示执行是自动触发的)。运行工作流测试时使用 evaluation

  • $exec.resumeFormUrl

    访问由 'Wait' 节点生成的表单的 URL。

  • $exec.resumeUrl

    用于恢复在 'Wait' 节点处等待的工作流的 webhook URL。

HTTPResponse#

  • $response.body

    上次 HTTP 调用的响应对象的 body。仅在 'HTTP Request' 节点中可用

  • $response.headers

    上次 HTTP 调用返回的 headers。仅在 'HTTP Request' 节点中可用。

  • $response.statusCode

    上次 HTTP 调用返回的 HTTP 状态码。仅在 'HTTP Request' 节点中可用。

  • $response.statusMessage

    关于请求状态的可选消息。仅在 'HTTP Request' 节点中可用。

Item#

NodeInputData#

NodeOutputData#

Number#

Object#

  • Object.compact()

    移除所有值为空的字段,即值为 null"" 的字段

  • Object.hasField(name)

    如果存在名为 name 的字段则返回 true。仅检查顶层键。比较区分大小写。

  • Object.isEmpty()

    如果 Object 没有设置任何键(字段)或为 null 则返回 true

  • Object.isNotEmpty()

    如果 Object 至少设置了一个键(字段)则返回 true

  • Object.keepFieldsContaining(value)

    移除值与给定 value 不至少部分匹配的字段。比较区分大小写。非字符串的字段将始终被移除。

  • Object.keys()

    返回包含对象所有字段名(键)的数组。与 JavaScript 的 Object.keys(obj) 相同。

  • Object.merge(otherObject)

    将两个 Object 合并为一个。如果某个键(字段名)在两个 Object 中都存在,则使用第一个(基础)Object 的值。

  • Object.removeField(key)

    从 Object 中移除一个字段。与 JavaScript 的 delete 相同。

  • Object.removeFieldsContaining(value)

    移除值与给定 value 至少部分匹配的键(字段)。比较区分大小写。非字符串的字段始终保留。

  • Object.toJsonString()

    将 Object 转换为 JSON 字符串。类似于 JavaScript 的 JSON.stringify()

  • Object.urlEncode()

    从 Object 的键和值生成 URL 参数字符串。仅支持顶层键。

  • Object.values()

    返回包含 Object 所有字段值的数组。与 JavaScript 的 Object.values(obj) 相同。

PrevNodeData#

  • name

    当前输入来自的节点名称。

如果有多个输入连接器(例如在 'Merge' 节点中),始终使用当前节点的第一个输入连接器。

  • outputIndex

    当前输入来自的输出连接器的索引。当前置节点有多个输出时使用(例如 'If' 或 'Switch' 节点)。

如果有多个输入连接器(例如在 'Merge' 节点中),始终使用当前节点的第一个输入连接器。

  • runIndex

    生成当前输入的前置节点的运行次数。

如果有多个输入连接器(例如在 'Merge' 节点中),始终使用当前节点的第一个输入连接器。

Root#

使用工作流的时区(可在工作流设置中更改)。

  • $pageCount

    节点已获取的结果页数。仅在 'HTTP Request' 节点中可用。

  • $parameter

    当前节点的配置设置。这些是你在节点 UI 中填写的参数(例如其操作)。

  • $prevNode

    关于当前输入来自的节点的信息。

在 'Merge' 节点中,始终使用第一个输入连接器。

  • $request

    节点上次运行时发送的请求对象。仅在 'HTTP Request' 节点中可用。

  • $response

    上次 HTTP 调用返回的响应。仅在 'HTTP Request' 节点中可用。

  • $runIndex

    当前节点执行中当前运行的索引。从 0 开始。

  • $secrets

    来自外部密钥保管库的密钥(如果已配置)。密钥值永远不会显示给用户。仅在凭证字段中可用。

  • $today

    表示当天午夜开始时刻的 DateTime。

使用实例的时区(除非在工作流设置中被覆盖)。

String#

如果字符串还包含其他内容,请先尝试使用 extractEmail()extractUrl()

  • String.extractEmail()

    提取字符串中找到的第一个电子邮件。如果未找到则返回 undefined

  • String.extractUrl()

    提取字符串中找到的第一个 URL。如果未找到则返回 undefined。仅识别完整的 URL,例如以 http 开头的。

  • String.extractUrlPath()

    返回 URL 中域名之后的部分,如果未找到 URL 则返回 undefined

如果字符串还包含其他内容,请先尝试使用 extractUrl()

如需检查文本是否存在,请考虑使用 includes()

要替换所有出现的位置,请使用 replaceAll()

与对数组使用 join() 相反。

  • String.startsWith(searchString, start?)

    如果字符串以 searchString 开头则返回 true。区分大小写。

  • String.substring(start, end?)

    在给定位置提取字符串的片段。更高级的提取请参阅 match()

  • String.toBoolean()

    将字符串转换为布尔值。0falseno 解析为 false,其他所有值解析为 true。不区分大小写。

  • String.toDateTime()

    将字符串转换为 DateTime。用于进一步转换。字符串支持的格式有 ISO 8601、HTTP、RFC2822、SQL 和毫秒级 Unix 时间戳。

要解析其他格式,请使用 DateTime.fromFormat()

  • String.toJsonString()

    准备将字符串插入 JSON 对象。转义所有引号和特殊字符(例如换行符),并用引号包裹字符串。

与 JavaScript 的 JSON.stringify() 相同。

  • String.toLowerCase()

    将字符串中的所有字母转换为小写

  • String.toNumber()

    将表示数字的字符串转换为数字。如果字符串不以有效数字开头则抛出错误。

  • String.toSentenceCase()

    将字符串的大小写更改为句子大小写。每个句子的第一个字母大写,其他字母小写。

  • String.toSnakeCase()

    将字符串的格式更改为蛇形命名法。空格和连字符替换为 _,符号被移除,所有字母转为小写。

  • String.toTitleCase()

    将字符串的大小写更改为标题大小写。每个单词的第一个字母大写,其他字母保持不变。短介词和连词不大写(例如 'a'、'the')。

  • String.toUpperCase()

    将字符串中的所有字母转换为大写

  • String.trim()

    移除字符串两端的空白字符。空白字符包括换行符、制表符、空格等。

  • String.urlDecode(allChars?)

    解码 URL 编码的字符串。将 %XX 形式的字符代码替换为其对应的字符。

  • String.urlEncode(allChars?)

    对字符串进行编码以便在 URL 中使用。空格和特殊字符被替换为 %XX 形式的代码。

WorkflowData#