web-dev-qa-db-fra.com

Obtenir un tableau d'éléments de l'instantané Firebase

J'essaie d'obtenir un tableau d'éléments de ma base de données Firebase, à l'aide d'un instantané généré lors du chargement de la page. J'ai ajouté la valeur de chaque objet à un tableau et j'essaie maintenant de transférer un élément de chaque objet dans un autre tableau avec une boucle for. 

Mais lorsque je crée le second tableau, il contient plus d'éléments que l'instantané. 

Je me demande comment je peux contourner cela. Toute aide serait géniale. Merci.

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

Chaque fois que vous ajoutez quelque chose aux touches, vous les passez en boucle. Vous devriez probablement le déplacer en dehors de votre 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);
    }   
});
10
Mathew Berg

Vous pouvez simplement utiliser lodash _.toArray()

_.toArray(snapshot.val()) convertira votre objet en un tableau d'objets.

Documentation

2
Yannick

@mike axle: Ajoutez simplement return true à l'intérieur de chaque. Ça marche pour moi... ;)

1
CWProduction