Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从Firebase快照获取项目数组_Javascript_Arrays_Firebase_Firebase Realtime Database - Fatal编程技术网

Javascript 从Firebase快照获取项目数组

Javascript 从Firebase快照获取项目数组,javascript,arrays,firebase,firebase-realtime-database,Javascript,Arrays,Firebase,Firebase Realtime Database,我正在尝试使用页面加载时生成的快照从Firebase数据库中获取项目数组。我已经将每个对象的值添加到一个数组中,现在我正尝试使用for循环将每个对象中的一个项推送到另一个数组中 但是当我创建第二个数组时,其中的项目比快照中的对象多 我在想我怎么才能避开这件事。任何帮助都会很棒。谢谢 代码: var ref = firebase.database().ref().child('/scenes/' + projId).orderByChild('wordcount'); ref.once('valu

我正在尝试使用页面加载时生成的快照从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);
        }
    });
});
var ref=firebase.database().ref().child('/scenes/'+projId).orderByChild('wordcount');
参考一次(“值”,功能(捕捉){
snap.forEach(功能(项){
var itemVal=item.val();
按键(itemVal);
对于(i=0;i
每次向键添加某些内容时,都会再次将其循环。您可能应该将其移到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);
    }   
});
var ref=firebase.database().ref().child('/scenes/'+projId).orderByChild('wordcount');
参考一次(“值”,功能(捕捉){
snap.forEach(功能(项){
var itemVal=item.val();
按键(itemVal);
});
对于(i=0;i
@mike Axes:只需在forEach中添加return true。它对我有用…;)

您只需使用
lodash\uu.toArray()

\uu.toArray(snapshot.val())
将对象转换为对象数组


您在哪里创建/初始化
?@FrankvanPuffelen我在这段代码之前初始化键并将其计数为空数组。很难说当前代码段中发生了什么。你能在jsbin/jsfiddle中重现这个问题吗?我现在爱你。花了很长时间试图找出类似的东西。很简单,不知道为什么我想不出这个:(出于某种原因,我根本无法迭代firebase快照。firebase最近有什么重大变化吗?我复制了一个粘贴的代码,但仍然得到相同的错误:类型的参数’(item:DataSnapshot)=>void’不可分配给类型的参数’(a:DataSnapshot)=>布尔值。类型“void”不可分配给类型“boolean”。实际上,我需要使用
返回false
,因为
true
会破坏
forEach
。使用您的解决方案,我在firebase 5.3.1中遇到此错误:snapshot.val不是函数