2017-01-16 54 views
1

我注意到,當我在Orion中註冊一些具有「浮動」屬性的實體時,在更新之後,類型更改爲「數字」而不是「浮動」。爲什麼屬性類型從浮點數變爲數字?

例如:

{ "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

我認爲這是由於默認打字,如在NGSIv2 spec的「部分表示」部分中描述:

屬性/元數據type可以在請求被省略。當在屬性/元數據創建或更新操作被省略,將缺省值取決於值用於類型:

  • 如果值是一個字符串,然後鍵入Text用於
  • 如果值是一個數,然後使用Number
  • 如果value是一個布爾值,則使用Boolean
  • 如果value是一個對象或數組,則使用StructuredValue
  • 如果值爲空,則使用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 
    
+1

我選擇了第一個選項,即在請求中使用「type」。這對我來說更好,因爲我一次更新多個屬性(請求)。我更新了答案,因爲它缺少代碼中的「類型」。 =) 謝謝。 – Dalton

+1

你是對的...對不起!我已經編輯了你的建議,加入''''(即''float「')。 – fgalan

相關問題