2017-01-02 94 views
2

我試圖從我的Firebase數據庫中獲取一組項目,使用頁面加載時生成的快照。我已經將每個對象的值添加到數組中,現在我試圖將每個對象中的項目推送到具有for循環的另一個數組中。從Firebase快照獲取項目數組

但是,當我創建第二個數組時,其中有更多的項目比快照中的對象。

我想知道如何解決這個問題。任何幫助都是極好的。謝謝。

代碼:

var ref = firebase.database().ref().child('/scenes/' + projId).orderByChild('wordcount'); 
ref.once('value',function(snap) { 
    snap.forEach(function(item) { 
     var itemVal = item.val(); 
     keys.push(itemVal); 
     for (i=0; i < keys.length; i++) { 
      counts.push(keys[i].wordcount); 
     } 
    }); 
}); 
+0

你在哪裏創建/初始化'keys'? –

+0

@FrankvanPuffelen在這段代碼之前,我初始化鍵和計數爲空數組。 – SyrupandSass

+0

很難說從目前的片段中發生了什麼。你可以在jsbin/jsfiddle中重現問題嗎? –

回答

7

每次再添加一些鍵,你遍歷所有。你可能應該將它移到你的forEach外面:

var ref = firebase.database().ref().child('/scenes/' + projId).orderByChild('wordcount'); 
ref.once('value',function(snap) { 
    snap.forEach(function(item) { 
     var itemVal = item.val(); 
     keys.push(itemVal); 
    }); 
    for (i=0; i < keys.length; i++) { 
     counts.push(keys[i].wordcount); 
    } 
}); 
+0

我現在愛你。花了很長時間試圖找出類似的東西。很簡單,不知道爲什麼我不能想到這個:( – JCisar

+2

出於某種原因,我無法迭代firebase快照。最近在firebase中做了一些重大更改嗎?我複製了粘貼的代碼,仍然得到相同的錯誤:參數類型'(item:DataSnapshot)=> void'不可分配給類型爲'(a:DataSnapshot)=>布爾型'的參數 類型'void'不可分配爲類型'布爾值'。 –

0

@mike軸:只需在each for內添加return true即可。它適用於我...;)