从Firebase快照获取一系列项目

Syr*_*ass 4 javascript arrays firebase firebase-realtime-database

我正在尝试使用页面加载时生成的快照从Firebase数据库中获取一系列项目.我已经将每个对象的值添加到数组中,现在我正在尝试将每个对象的项目推送到另一个带有for循环的数组中.

但是当我创建第二个数组时,它中的项目比快照中的对象多.

我想知道如何解决这个问题.任何帮助都是极好的.谢谢.

码:

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);
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

Mat*_*erg 14

每次向键添加内容时,都会再次循环遍历它们.您应该将它移到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);
    }   
});
Run Code Online (Sandbox Code Playgroud)

  • 出于某种原因,我根本无法迭代firebase快照.最近firebase发生了哪些重大变化?我复制了粘贴你的代码并仍然得到相同的错误:类型'(item:DataSnapshot)=> void'的参数不能分配给'(a:DataSnapshot)=> boolean'类型的参数.类型'void'不能分配给'boolean'类型. (2认同)

Yan*_*ick 7

你可以使用 lodash _.toArray()

_.toArray(snapshot.val()) 将您的对象转换为对象数组。

文档