2017-01-16 4 views
1

Orion에서 'float'속성으로 엔티티를 등록하면 일부 업데이트 후에 유형이 'float'대신 'number'로 변경된다는 사실을 알았습니다. 예를 들어속성 유형이 float에서 number로 변경되는 이유는 무엇입니까?

: my_entity 등록 할 때이 경우

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

는 속성 유형 모두 '플로트'이었다. attr2의 값이 업데이트되었을 때, 그 타입이 'Number'로 변경되었습니다. 이것이 올바른 행동입니까?

답변

1

나는 이것이 NGSIv2 spec에서 "일부 표현"절에서 설명한대로, 기본 입력으로 인해 생각 :

특성/메타 데이터 type는 요청에서 생략 될 수있다. 속성/메타 데이터의 생성 또는 업데이트 작업을 생략 할 때, 디폴트 값에 따라 입력을 위해 사용된다 : 값이 문자열 인 경우

  • , 그때 사용 Text 입력
  • 값이 숫자이면
  • , 종류는 Number입니다.
  • 값이 부울이면 Boolean이 사용됩니다.
  • 값이 객체 또는 배열 인 경우 StructuredValue이 사용됩니다.
  • 값이 null이면 None이 사용됩니다.

따라서, 아마 다음 (O 유사한) 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