2017-06-01 28 views
0

我想用我的mongoDB中的一些值使用mongoose和Node.js創建一個AMchart。由於Node.js是異步的,我無法將我的值從查詢傳遞到圖表,如果我將圖表創建放在與查詢相同的函數範圍內,當我在句柄中調用時,我什麼也得不到,因爲圖表創建是在查詢內部,但這是我能夠檢索數據的方式。我的代碼如下:MongoDB和AMCharts

<script> 
 
    var Edad = require('../models/edad'); 
 
\t var data = []; 
 
\t Edad.find().lean().exec(function(err, docs) { 
 
\t \t if (err) throw err; 
 
\t \t data = docs; 
 
\t \t for (var i in data) { 
 
\t \t \t delete data[i]._id; 
 
\t \t \t delete data[i].__v; 
 
\t \t } 
 
\t }); 
 
var chart = AmCharts.makeChart("chartdiv", { 
 
    "type": "serial", 
 
    "theme": "patterns", 
 
    "dataProvider": data, 
 
    "valueAxes": [ { 
 
    "gridColor": "#FFFFFF", 
 
    "gridAlpha": 0.2, 
 
    "dashLength": 0 
 
    } ], 
 
    "gridAboveGraphs": true, 
 
    "startDuration": 1, 
 
    "graphs": [ { 
 
    "balloonText": "Edad: [[category]]: <b> Numero Vacunas: [[value]]</b>", 
 
    "fillAlphas": 0.8, 
 
    "lineAlpha": 0.2, 
 
    "type": "column", 
 
    "valueField": "vacunas" 
 
    } ], 
 
    "chartCursor": { 
 
    "categoryBalloonEnabled": false, 
 
    "cursorAlpha": 0, 
 
    "zoomable": false 
 
    }, 
 
    "categoryField": "edad", 
 
    "categoryAxis": { 
 
    "gridPosition": "start", 
 
    "gridAlpha": 0, 
 
    "tickPosition": "start", 
 
    "tickLength": 20 
 
    }, 
 
    "export": { 
 
    "enabled": true 
 
    } 
 

 
}); 
 
</script>
<div id="main-wrapper"> 
 
\t <div class="container"> 
 
\t  <article class="box post"> 
 
\t \t \t <header> 
 
\t \t \t \t <h2>Vacunas Por Edad</h2> 
 
\t \t \t \t <p>Estadisticas para el numero de vacunas aplicadas por cada grupo de edad de los pacientes</p> 
 
\t \t \t </header> 
 
      <div id="chartdiv"></div> 
 
     </article> 
 
\t </div> 
 
</div>

我需要將數據從JSON「數據」是在圖表創建「數據提供者」的價值,任何幫助將不勝感激

+0

請告訴我,您實際上並不是在腳本標記中查詢mongoDB。 –

+0

不,我實際上是通過GET傳遞數據,然後用數據渲染車把。我只是在腳本中寫下它以便編寫一段代碼。 –

回答

0

你可以嘗試建立圖表,然後添加數據後使用validateNow

<script> 
 
    var chart = AmCharts.makeChart("chartdiv", { 
 
    "type": "serial", 
 
    "theme": "patterns", 
 
    "dataProvider": [], 
 
    "valueAxes": [ { 
 
     "gridColor": "#FFFFFF", 
 
     "gridAlpha": 0.2, 
 
     "dashLength": 0 
 
    } ], 
 
    "gridAboveGraphs": true, 
 
    "startDuration": 1, 
 
    "graphs": [ { 
 
     "balloonText": "Edad: [[category]]: <b> Numero Vacunas: [[value]]</b>", 
 
     "fillAlphas": 0.8, 
 
     "lineAlpha": 0.2, 
 
     "type": "column", 
 
     "valueField": "vacunas" 
 
    } ], 
 
    "chartCursor": { 
 
     "categoryBalloonEnabled": false, 
 
     "cursorAlpha": 0, 
 
     "zoomable": false 
 
    }, 
 
    "categoryField": "edad", 
 
    "categoryAxis": { 
 
     "gridPosition": "start", 
 
     "gridAlpha": 0, 
 
     "tickPosition": "start", 
 
     "tickLength": 20 
 
    }, 
 
    "export": { 
 
     "enabled": true 
 
    } 
 

 
    }); 
 

 
    var Edad = require('../models/edad'); 
 
\t Edad.find().lean().exec(function(err, data) { 
 
\t \t if (err) throw err; 
 
\t \t for (var i in data) { 
 
\t \t \t delete data[i]._id; 
 
\t \t \t delete data[i].__v; 
 
\t \t } 
 
    
 
    chart.validateNow(data, false); 
 
\t }); 
 
</script>

+0

實際上它不起作用,它會呈現沒有任何價值的圖表,只是一張空白圖表。我認爲這是由於node.js是異步的,我已經嘗試使用期貨和異步,但同樣的事情發生 –