2017-07-31 34 views
0

我試圖找到一種方法來從Firebase數據庫節點檢索特定的子集,但是從我發現無法根據我的研究結果和回答這個問題的方式來完成。 How do I retrieve specific child(s) from a firebase database node instead of the snapshot of everything in the node?我如何找到火力地堡中的多個孩子的比賽?

我認爲這可能是一種解決方法,如果我引用數組中的每個警報ID,然後連續獲取其快照。因此,我有這個文件讀取器從CSV文件獲取ID值並將它們分開,然後提醒每個ID值。

var reader = new FileReader(); 
    reader.onload = function() { 

    var trnsarray = reader.result.split(/\s+/).splice(1).join(', '); 

    var newarray = trnsarray.split(',').map(parseFloat); 

    for (var i=0; i < newarray.length; i++) { 

    alert(newarray[i]); 

    } 

而是提醒每一個ID,我希望它得到每個ID的快照newarray。我嘗試了下面的函數,但它根本不讀取ID。

var dbRef = firebase.database().ref().child('Node').(newarray[i]); 
dbRef.on('value', snapshot => { 
    console.log(snapshot) 
    } 

如何連續獲取newarray中每個ID的快照值?這如何實現?

回答

0

你忘了孩子在你的代碼:

.(newarray[i]); 

試試這個:

var dbRef = firebase.database().ref().child('Node'); 

for (var i=0; i < newarray.length; i++) { 
    dbRef.child(newarray[i]).on('value', snapshot => { 
     console.log(snapshot); 
    } 
} 
0

請記住,我們可以得到快照的孩子,我們可以利用此功能使用如下代碼:

var trnsarray = reader.result.split(/\s+/).splice(1).join(', '); 
var beforearray = trnsarray.split(',').map(parseFloat); 
var newarray = []; 
var dbRef = firebase.database().ref().child('Node').orderByKey(); 
dbRef.on('value', snapshot => { 
    snapshot.forEach(childSnapshot => { 
     console.log(childSnapshot.key); 
     if(beforearray.includes(childSnapshot.key)){ 
      console.log(childSnapshot.key + ' : ' + childSnapshot.val()); 
      //put your code here 
      newarray.push(childSnapshot.key); 
     } 
    }); 
} 
+0

newarray包含許多唯一的ID,即100002,140502,400562.所以我想根據childSnapshot.key運行每個ID並返回匹配ID的快照。這個代碼if(newarray.includes(childSnapshot.key))沒有成功地做到這一點。我該如何糾正它? – Ola

+0

@Ola我編輯了我的答案。如果我沒有錯,你想獲得插入到firebase數據庫中的ID嗎? – faruk

+0

我非常想在firebase數據庫中找到100002,140502和400562。 – Ola