产品定价 立即试用
社区版
check fields presence
入门 文档 指南 安装 架构 API 常见问题

check fields presence

检查入站消息 data 和/或 metadata 中是否存在指定字段。 默认情况下,节点要求所有指定字段都存在;可切换为“至少一个”模式。

前置条件

入站消息data必须为JSON对象。

配置

字段说明

  • 消息字段名 — 可选。要在消息data中查找的顶级 JSON字段名集合。
  • Metadata字段名 — 可选。要在消息metadata中查找的metadata键名集合。
文档信息图标

尽管每集合均可选,但其中至少一个必须提供至少一个字段(即至少一个集合非空)。

  • 检查所有指定字段是否都存在 — 开关。
    • 启用: 仅当所有列出的消息/metadata字段都存在时才经 True 路由。
    • 禁用:至少一个列出的消息/metadata字段存在时经 True 路由。

JSON Schema

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "TbCheckMessageNodeConfiguration",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "messageNames": {
      "description": "Field names to check in the message data.",
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      },
      "uniqueItems": true
    },
    "metadataNames": {
      "description": "Field names to check in the message metadata.",
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      },
      "uniqueItems": true
    },
    "checkAllKeys": {
      "description": "If true, require all listed fields. If false, require at least one.",
      "type": "boolean",
      "default": true
    }
  },
  "anyOf": [
    {
      "properties": {
        "messageNames": {
          "minItems": 1
        }
      }
    },
    {
      "properties": {
        "metadataNames": {
          "minItems": 1
        }
      }
    }
  ]
}

消息处理逻辑

  1. data 提取为JSON对象,metadata 提取为键值对。
  2. 评估存在性:
    • 检查所有键已启用:当 messageNames 中列出的每个字段均存在于data metadataNames 中列出的每个字段均存在于metadata时,经 True 路由。
    • 检查所有键已禁用:当任意列出的字段存在于data metadata时,经 True 路由。
  3. 否则经 False 路由。若发生错误(如负载不是JSON对象),经 Failure 路由。
文档信息图标

仅检查顶级键;不支持嵌套路径(如 sensor.temp)。

文档信息图标

存在指键存在,无论其值如何(包括 null 或空字符串)。

输出连接

  • True
    • 当配置的存在条件满足时。
  • False
    • 当配置的存在条件不满足时。
  • Failure
    • 当入站消息data无法解析为JSON对象时。
    • 消息处理过程中发生其他意外错误时。

示例

以下示例仅展示入站消息的相关字段。除非另有说明,其他消息字段可为任意值。


示例1 — 所有必填data字段都存在 → True

入站消息

Data:

1
2
3
4
{
  "temp": 22.5,
  "humidity": 55
}

节点配置

1
2
3
4
5
6
7
8
{
  "messageNames": [
    "temp",
    "humidity"
  ],
  "metadataNames": [],
  "checkAllKeys": true
}

系统状态

不相关。

结果

True 路由。

说明

temphumidity 均存在于负载中。


示例2 — 缺少一个必填data字段 → False

入站消息

Data:

1
2
3
{
  "temp": 22.5
}

节点配置

1
2
3
4
5
6
7
8
{
  "messageNames": [
    "temp",
    "humidity"
  ],
  "metadataNames": [],
  "checkAllKeys": true
}

系统状态

不相关。

结果

False 路由。

说明

humidity 不存在。


示例3 — 至少一个metadata字段存在 → True

入站消息

Metadata:

1
2
3
4
{
  "deviceName": "Pump-42",
  "token": "abc123"
}

节点配置

1
2
3
4
5
6
7
8
{
  "messageNames": [],
  "metadataNames": [
    "token",
    "tenantId"
  ],
  "checkAllKeys": false
}

系统状态

不相关。

结果

True 路由。

说明

至少一个列出的metadata键(token)存在。


示例4 — 至少一个data字段存在 → True

入站消息

Data:

1
2
3
4
{
  "temperature": 123,
  "humidity": 42
}

Metadata:

1
2
3
4
{
  "deviceName": "Sensor-1",
  "deviceType": "TemperatureSensor"
}

节点配置

1
2
3
4
5
6
7
8
9
10
{
  "messageNames": [
    "temperature"
  ],
  "metadataNames": [
    "token",
    "tenantId"
  ],
  "checkAllKeys": false
}

系统状态

不相关。

结果

True 路由。

说明

至少一个列出的键(temperature)存在。


示例5 — 无效消息格式 → Failure

入站消息data

1
"not a JSON object"

节点配置

1
2
3
4
5
6
7
{
  "messageNames": [
    "temp"
  ],
  "metadataNames": [],
  "checkAllKeys": true
}

系统状态

不相关。

结果

Failure

说明

消息data不是JSON对象,节点无法检查data键。