ThingsBoard 规则链:check existence fields
正文与配图来自原稿。本篇讲筛选器节点 check existence fields(检测字段是否存在)。
1、概述
check existence fields 用来检测字段是否存在,可以检查规则节点消息(msg)和元数据(metadata)中的字段。
2、节点理解
2.1、概述
节点配置如图:

| 配置项 | 含义 |
|---|---|
| 名称 | 给这个节点命名 |
| Message data | 检查 msg 里是否存在的字段;输入字段名后按 Enter 添加,可配多个 |
| Message metadata | 检查 metadata 里是否存在的字段 |
| Check that all selected keys are present | 「检查所有选择的键是否都存在」。勾选后:Message data 与 Message metadata 里配置的字段都必须存在才返回 True,否则 False |
| 说明 | 对该节点的描述信息 |
3、案例实操
演示:温度传感器上报温度;检测 temperature 是否存在——存在则保存遥测,不存在则打印 log。
3.1、创建设备配置
创建设备配置 temperature sensor:

3.2、创建设备
创建设备 temperatureSensorA,设备配置选择 temperature sensor:

3.3、规则链添加 check existence fields
规则链示意:仅在 Message data 中配置 temperature 字段。


4、测试
用 MQTTX 模拟设备:

模拟上报温度 90℃:

查看 check existence fields 节点日志:out 为 True,进入保存遥测分支:

设备遥测中已有数据写入:

再在 Message metadata 中增加要检查的字段 address,并勾选「全部键都存在」一类要求后再次上报:

此时节点日志 out 为 False:metadata 里没有 address。设备上报内容一般在 msg 里;metadata 多为设备元数据,或由其它规则节点查询后写入。

False 分支进入 log,可见打印记录:

5、扩展
这个节点检查字段比较方便,但容易用错——尤其是否要求 msg 与 metadata 中配置的键全部存在。日常工作中也常用 script 做字段校验:

注意图中黄色的 script 节点,专门用于判断。用法示例:

用 JS:msg.hasOwnProperty("temperature") —— msg 中存在 temperature 则 True,否则 False。
补充(辅)
- 只查上报体:只填 Message data,不要误加 metadata 键。
- 勾选「所有键都存在」时,任一缺失都会走 False。
hasOwnProperty只判断「有没有这个键」,不保证值非空;要非空需再写判断。
