2017-09-18 289 views
1

創建的JSON檢索數據這是我的數據庫結構火力地堡數據檢索:我無法從火力地堡數據庫

{ 
    "main" : { 
    "fake data1" : { 
     "abc" : "1001", 
     "high" : "100", 
     "low" : "150", 
     "mid" : "200", 
     "name" : "fake data1" 
    }, 
    "fake data2" : { 
     "abc" : "1023", 
     "high" : "1020", 
     "low" : "1020", 
     "mid" : "1501", 
     "name" : "fake data2" 
    }, 
    "fake data3" : { 
     "abc" : "1001", 
     "high" : "100", 
     "low" : "150", 
     "mid" : "200", 
     "name" : "fake data3" 
    }, 
    "fake data4" : { 
     "abc" : "1023", 
     "high" : "1020", 
     "low" : "1020", 
     "mid" : "1501", 
     "name" : "fake data4" 
    }, 
    "fake data5" : { 
     "abc" : "1001", 
     "high" : "100", 
     "low" : "150", 
     "mid" : "200", 
     "name" : "fake data5" 
    }, 
    "fake data6" : { 
     "abc" : "1023", 
     "high" : "1020", 
     "low" : "1020", 
     "mid" : "1501", 
     "name" : "fake data6" 
    } 
    } 
} 

我想從以上檢索所有的名字,但我不能去做吧。

我用下面的查詢嘗試:

var datafire = firebase.database().ref(); 
    var namedb = datafire.child('main') 
    var query = namedb.orderByChild('name') 
    query.on("value", function(datasnap) { 
         var data = (datasnap.val()); 
         console.log(data.name); 
+0

我認爲你缺少'假data1','假data2'在查詢 – 3stud1ant3

回答

1

當您執行對火力地堡數據庫的查詢,也將有可能是多個結果。所以快照包含了這些結果的列表。即使只有一個結果,快照也會包含一個結果列表。

您的代碼將需要通過在這些項目使用Snapshot.forEach()循環來處理快照中包含多個項目的事實:

var datafire =firebase.database().ref(); 
var namedb = datafire.child('main') 
var query = namedb.orderByChild('name') 
query.on("value",function(datasnap){ 
    datasnap.forEach(function(child) { 
    var data=child.val(); 
    console.log(child.key, data.name); 
    }); 
});