表达式与代码
在 Duaer 里定义自定义变量
在 Duaer 里用自定义变量存值,并在多条数字组织中复用。
变量是什么
Duaer 变量是实例或项目里保存的键和值,不是 JavaScript 里临时的 const。运行到表达式或 Code 节点时,Duaer 把 $vars.键名 换成当时的值。
所有值都是字符串。键没有值时读到 undefined,这次运行不会因此失败。运行中不能改;要改就打开 Variables。一次运行内部记数据,用自定义执行数据,不要用变量。
范围:全局和项目
- 全局变量:整个实例都能读。
- 项目变量:只在该项目的数字组织里可读。
- 同名时,项目变量盖过全局变量。
- 实例所有者可以新建。项目里能不能新建,看你在该项目的角色。当前套餐不含变量时,界面会提示升级。
新建变量
- 在 Variables 里点 Add variable。
- 填写 Key 和 Value。键最长 50 个字符,值最长 1000 个字符。新键只能用字母、数字和下划线,且不能以数字开头,否则 $vars.键名 这种点号写法会断掉。
- 从总览页新建时选择 Scope:Global 给整个实例,Project 只给选定的项目。从某个项目页新建时,范围就是这个项目。
- 点 Save。
修改或删除变量
- 在 Variables 里把鼠标停在那一行上。
- 选 Edit 或 Delete。
在数字组织里读取
表达式和 JavaScript Code 节点都可以读:
{{ $vars.api_host }}
$vars.api_host第一行是节点参数里的表达式。第二行是 Code 节点。键名就是保存时填的 Key。
常见问题
Duaer 变量在表达式里怎么读?
在 Duaer 里写成 $vars.键名。表达式放在 {{ }} 里;JavaScript Code 节点直接写 $vars.键名。值一律是字符串。键没有值时是 undefined,运行不会因此失败。
Duaer 的全局变量和项目变量哪个优先?
Duaer 的全局变量整个实例可读。项目变量只在该项目的数字组织里可读。同名时项目变量盖过全局变量。运行中不能改,要到 Variables 界面改。
同组
在 Duaer 里用表达式转换数据
Duaer 表达式写在 {{ }} 里,可在支持表达式的参数中调用转换方法。只做字段整理时,先用 Edit Fields(Set)。
表达式在 Duaer 里使用内置方法和变量
Duaer 在表达式里提供读取数据的变量和按类型调用的方法。Code 节点跑的是普通 JavaScript 和原生 Luxon。
表达式在 Duaer 表达式里使用快捷方法
在 Duaer 表达式里用 $json 读当前项,用 $("节点名") 读前面的节点,用 $now 和 $if() 处理时间和条件。
表达式在 Duaer 里使用 HTTP 节点分页变量
Duaer 的 HTTP Request 节点在分页表达式里提供 $pageCount、$request 和 $response。这三个名字只在该节点里有效。
转换在 Duaer 里使用数据转换方法
在 Duaer 表达式里,在值后面调用转换方法,例如 {{ $json.name.toTitleCase() }}。按数组、布尔、日期、数字、对象、字符串分组。
转换Duaer 数组上的转换方法
在 Duaer 表达式里,数组方法写在数组后面,例如 {{ $json.ids.unique() }}。average、max、min 遇到非数字会报错。
转换Duaer 布尔值上的转换方法
在 Duaer 表达式里,布尔值可以判断空不空,也可以转成数字或字符串。true 转成数字是 1,false 是 0。
转换Duaer 日期上的转换方法
Duaer 表达式里,$now 和 $today 是 Luxon 的 DateTime。字符串或数字要先 toDateTime(),再调用 format、plus、setZone。
转换Duaer 数字上的转换方法
在 Duaer 表达式里,数字方法做取整、奇偶判断,以及转成布尔、字符串或 DateTime。round 取最接近的数,ceil 向上,floor 向下。
转换Duaer 对象上的转换方法
在 Duaer 表达式里,对象方法用来判断字段、删字段、合并,以及把对象编成查询字符串。
转换Duaer 字符串上的转换方法
在 Duaer 表达式里,字符串方法做大小写、截取、判断邮箱和网址,以及 base64 和 URL 编解码。
查询在 Duaer 里用 JMESPath 查询 JSON
在 Duaer 里用 $jmespath(对象, "查询") 查询 JSON。表达式和 JavaScript Code 节点可用;Python Code 节点没有。
日期在 Duaer 里用 Luxon 处理日期
Duaer 表达式里的日期是 Luxon 的 DateTime。$now 和 $today 直接就是。Code 节点用原生 Luxon,format() 和 plus(数量, 单位) 不能照搬。
示例Duaer 表达式示例
这些 Duaer 示例都在表达式模式里:读当前项、补默认值、格式化日期,并在字段很多时改用 Edit Fields(Set)。
示例Duaer 方法和变量对照
Duaer 表达式里最常用的名字:当前项用 $json,前面的节点用 $("节点名"),变量用 $vars,转换方法按数据类型分到各自的页面。