it-swarm.com.de

Holen Sie sich ein Array von Elementen aus dem Firebase-Snapshot

Ich versuche, ein Array von Elementen aus meiner Firebase-Datenbank abzurufen, wobei ein Snapshot verwendet wird, der beim Laden der Seite generiert wird. Ich habe den Wert jedes Objekts zu einem Array hinzugefügt, und jetzt versuche ich, ein Element von einem Objekt in ein anderes Array mit einer for-Schleife zu verschieben. 

Wenn ich jedoch das zweite Array erstelle, befinden sich mehr Elemente darin als Objekte im Snapshot. 

Ich frage mich, wie ich das umgehen kann. Jede Hilfe wäre großartig. Vielen Dank.

Code: 

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);
        }
    });
});
4
SyrupandSass

Jedes Mal, wenn Sie den Schlüsseln etwas hinzufügen, gehen Sie sie erneut durch. Sie sollten es wahrscheinlich außerhalb Ihres forEach verschieben:

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);
    }   
});
10
Mathew Berg

Sie können einfach lodash _.toArray() verwenden.

_.toArray(snapshot.val()) konvertiert Ihr Objekt in ein Array von Objekten.

Dokumentation

2
Yannick

@Mike-Achse: Fügen Sie einfach return true in forEach hinzu. Für mich geht das... ;)

1
CWProduction