2017-07-24 55 views
0

我有一個數據庫結構,這樣 enter image description here火力點快照鍵顯示不正確的鍵

firebase.auth().onAuthStateChanged((user) => { 
    if (user) { 
     database = firebase.database(); 
     var dbRef = firebase.database().ref().child('Agents').child(newarray[i]).orderByKey(); 

     dbRef.on('value', newAgents, errData); 
    } 
}) 

function newAgents(data) { 
    var container = document.getElementById("team"); 
    container.innerHTML = ''; 

    data.forEach(function(AgentSnap) { // loop over all jobs 

     console.log(AgentSnap.key); 
     var Agents = AgentSnap.val(); 
     var AgentCard = ` 
      <div class= "profilepics" id="${key}"> 
       <figure ><img src=${Agents.profilepicurl}><figcaption>${Agents.Fname}</figcaption></figure> 
      </div> 
     `; 

     container.innerHTML += AgentCard; 
    }) 
} 

但火力datasnapshot的控制檯日誌鍵顯示該

enter image description here 我如何可以改變從關鍵例如19777873的孩子節點?

+1

一個可能的罪魁禍首:我* *強烈建議不要使用的火力地堡實時數據庫純粹的數字鍵。 SDK將自動嘗試將其強制轉換爲數組。如果您的前綴是下劃線,例如'_12354666' –

+0

好的我會生成字母數字鍵 – Ola

+0

@MichaelBleigh雖然我同意你的建議,但我懷疑這是導致這個數據集出現問題的原因。數據非常稀少,SDK足夠聰明,可以檢測到這是*不是數組。 –

回答

0

您附上您的收聽到單一代理:

var dbRef = firebase.database().ref().child('Agents').child(newarray[i]).orderByKey(); 

這意味着,傳遞給你的回調將快照包含單個代理的屬性。然後在你的聽衆中,你循環快照的子節點。這意味着您最終會遍歷AuthIdFnameLname

要獲得所有代理商,聽衆重視/Agents

var dbRef = firebase.database().ref().child('Agents').orderByKey(); 
+0

感謝您的回覆,我之所以使用newarray [i]是因爲我有一組已分配給newarray的ID,我在考慮添加[I]會導致它在數據庫中連續查找newarray的每個ID 。如果我只是引用.child('Agents'),它會顯示代理中的所有內容,這些內容對於我所尋找的內容來說太多了。我只希望它僅顯示與newarray中的內容匹配的內容 – Ola

+0

Firebase無法按鍵返回項目列表。看到我的答案在這裏:https://stackoverflow.com/questions/29560088/firebase-equivalent-to-sql-where-in –