Types 为什么属性类型从float变为number?

Types 为什么属性类型从float变为number?,types,attributes,fiware,fiware-orion,Types,Attributes,Fiware,Fiware Orion,我注意到,当我在Orion中使用一些“float”属性注册实体时,在一些更新之后,类型被更改为“number”而不是“float” 例如: { "id":"my_entity", "type":"entity_type", "attr1":{ "type":"float", "value":"0.54", "metadata":{}}, "attr2":{ "type":"Number", "value":44.3,

我注意到,当我在Orion中使用一些“float”属性注册实体时,在一些更新之后,类型被更改为“number”而不是“float”

例如:

{ "id":"my_entity", 
  "type":"entity_type",
  "attr1":{
      "type":"float",
      "value":"0.54",
      "metadata":{}},
  "attr2":{
      "type":"Number",
      "value":44.3,
      "metadata":{}}}]

在本例中,注册my_实体时,两种类型的属性都是“float”。当对attr2的值进行某些更新时,其类型更改为“Number”。这是正确的行为吗?

我认为这是由于默认键入造成的,如中的“部分表示”部分所述:

请求中可以省略属性/元数据
类型
。当在属性/元数据创建或更新操作中省略时,将根据值为类型使用默认值:

  • 如果值是字符串,则使用类型
    Text
  • 如果值是一个数字,则使用类型
    number
  • 如果值是布尔值,则使用类型
    boolean
  • 如果值是对象或数组,则使用
    StructuredValue
  • 如果值为null,则使用
    None
因此,您可能正在使用以下(类似的)API操作更新属性:

PUT /v2/entities/my_entity/attrs/attr2

{
  "value": 44.3
}
PUT /v2/entities/my_entity/attrs/attr2

{
  "type": "float",
  "value": 44.3
}
type
该有效负载中的省略将触发默认的键入功能

基本上,有两种解决方案:

  • 在属性更新操作中使用
    类型

    PUT /v2/entities/my_entity/attrs/attr2
    
    {
      "value": 44.3
    }
    
    PUT /v2/entities/my_entity/attrs/attr2
    
    {
      "type": "float",
      "value": 44.3
    }
    
  • 使用属性值更新操作(不涉及类型或元数据):


  • 我选择了第一个选项,即在请求中使用“type”。这对我来说更好,因为我一次更新多个属性(请求)。我更新了答案,因为代码中缺少“类型”。=)谢谢。你说得对。。。很抱歉我已经采纳了你的建议,添加了
    (即
    “float”
    )。