2015-02-04 4 views
0

Angularjs의 ES 쿼리와 NVD3의 ES 쿼리를 시각화를 위해 전달하려고하지만 저는 JS의 초보자이며이를 파악하려고합니다. 나는 그것이 k/v 쌍을 가진 하나의 배열을 기대한다는 것을 알았지 만, 그 형식으로 반환되는 데이터를 어떻게 변환합니까?Angularjs의 NVD3에 대한 ElasticSearch

내 쿼리 : RESP의

esClient.search({ 
     index: 'unitedstates', 
     size: 5, 
     body: { 
      query: { 
       "match_all" : {}    
      }, 
      facets: { 
        tagcloud: { 
        terms: { 
         field: 'state'   
        } 
        } 
       }  
     } 
    }).then(function (resp) { 
     $scope.data = resp.facets.tagcloud.terms; 
    }); 

결과 : NVD3에서

Array[10] 
    0: Object 
    count: 986 
    term: "virginia" 
    __proto__: 
Object1: 
Object2: 
Object3: 
Object4 

, 그들은 기대하는 웹 사이트 (http://nvd3.org/examples/pie.html)

return [ 
     { 
     "label": "One", 
     "value" : 29.765957771107 
     } , 
     { 
     "label": "Two", 
     "value" : 0 
     } , 
     { 
     "label": "Three", 
     "value" : 32.807804682612 
     } , 
     { 
     "label": "Four", 
     "value" : 196.45946739256 
     } , 
     { 
     "label": "Five", 
     "value" : 0.19434030906893 
     } , 
     { 
     "label": "Six", 
     "value" : 98.079782601442 
     } , 
     { 
     "label": "Seven", 
     "value" : 13.925743130903 
     } , 
     { 
     "label": "Eight", 
     "value" : 5.1387322875705 
     } 
    ]; 
+0

ES가 반환하는 내용을 보려면 firebug 또는 Chrome 개발 도구에서 console.dir (resp)을 수행하십시오. 그런 다음 원하는대로 데이터를 업데이트하십시오. – Zouzias

답변

1

에서 아래의 형태로 내가 올바르게 이해한다면 그냥 할 수있을거야

$scope.data = []; 
for (var i=0; i<resp.length; ++i) { 
    $scope.data.push({ 
    label: resp[i].term, 
    value: resp[i].count 
    }); 
}