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

时间:2017-01-16 17:12:02

标签: 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,
      "metadata":{}}}]

在这种情况下,当注册my_entity时,两种类型的属性都是“浮动”。当对attr2的值进行某些更新时,其类型已更改为“Number”。这是正确的行为吗?

1 个答案:

答案 0 :(得分:1)

我认为这是由于默认输入,如NGSIv2 spec中的“部分表示”部分所述:

  

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

     
      
  • 如果value是字符串,则使用类型Text
  •   
  • 如果value是数字,则使用类型Number
  •   
  • 如果value是布尔值,则使用类型Boolean
  •   
  • 如果value是对象或数组,则使用StructuredValue
  •   
  • 如果value为null,则使用None
  •   

因此,您可能正在使用以下(类似的)API操作更新您的属性:

PUT /v2/entities/my_entity/attrs/attr2

{
  "value": 44.3
}
该有效负载中的

type遗漏触发了默认的输入功能。

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

  1. 在属性更新操作中使用type

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

    PUT /v2/entities/my_entity/attrs/attr2/value
    
    44.3