簡體   English   中英

從網址獲取d3.js數組

[英]Fetch d3.js array from a url

這是我所擁有的數據

{ "_id" : ObjectId("kdahfa"), "minTime" : ISODate("2016-04-02T00:00:00.000+0000"), "maxTime" : ISODate("2016-04-02T00:11:00.000+0000"), "Time" : 660.0, "Name" : "Sam" }   
{ "_id" : ObjectId("aabhk"), "minTime" : ISODate("2016-04-02T01:00:00.000+0000"), "maxTime" : ISODate("2016-04-02T02:14:25.000+0000"), "Time" : 4465.0, "Name" : "Bob" }  
{ "_id" : ObjectId("bak"), "minTime" : ISODate("2016-04-02T19:00:00.000+0000"),     "maxTime" : ISODate("2016-04-02T19:52:22.000+0000"), "Time" : 3142.0, "Name" :     "Sam" }  

我編寫了python(瓶)代碼以從mongoDB服務器獲取數據並在本地主機上運行它。 網址為http:// localhost:8080 / result

  @bottle.route('/result')
     def grab_record():
     bottle.response.headers['Access-Control-Allow-Origin'] = '*'
     a = dbcoll.find_one({},{'_id':False})
     a['minTime'] = str(a['minTime'])
     a['maxTime'] = str(a['maxTime'])
     response.content_type = 'application/json'  
     return dumps(a)

現在,我希望從http://bl.ocks.org/dk8996/5449641獲得幫助,以此創建d3.js圖。 我希望example.js中的任務數組從url / mongodb中獲取數據。 我應該對d3.js代碼進行哪些更改以使其根據我的要求運行?

d3.json("http://localhost:8080/result", function(error, data) {
data.forEach(function(d) {
    d.maxTime = parseDate(d.maxTime);
    d.minTime = parseDate(d.minTime);
    d.Time = +d.Time;
});

var taskNames = ["Bob", "Sam"];

taskStatus = {
"Bob": "bar",
"Sam": "bar-failed",
};

var gantt = d3.gantt().taskTypes(taskNames).taskStatus(taskStatus);
gantt(tasks);
});

這些是我到目前為止對example.js文件所做的更改。 我收到一個錯誤
未捕獲的TypeError:data.forEach不是函數
我希望創建一個返回的d3.js對象的數組,並像在http://bl.ocks.org/dk8996/5449641上使用的那樣使用它。

 a = dbcoll.find_one({},{'_id':False})

在這一行中,您僅查詢數據庫中的一個條目,這就是為什么返回的結果是單個對象而不是數組的原因(可能還需要將第一個參數{}更改為[]或表示數組的內容,但是我對dbcoll不熟悉。

您需要將find_one更改為find或其他內容,您將獲得一個數組。

然后,后處理,你需要通過數組迭代a

a = a.map(function(b){
     b['minTime'] = str(b['minTime'])
     b['maxTime'] = str(b['maxTime'])
     return b;
}

在MongoDB中,可以find一種方法: https : //docs.mongodb.com/manual/reference/method/db.collection.find/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM