0

Je commence juste à utiliser Firebase. J'ai un document avec 6 enregistrements indexés par id. Je voudrais interroger et synchroniser les 3 premiers éléments de la liste.Angularfire - requête Firebase/synchro x premiers éléments dans le document

var metals = new Firebase("https://<dbname>.firebaseio.com/metals").limit(3); 
$scope.metals = $firebase(metals); 

Cela fournit les 3 derniers articles dans la liste. Pas ce que je voulais.

Donc, pour obtenir les premiers 3 articles, je pensais que cela fonctionnerait, mais il se casse ...

var metals = new Firebase("https://<dbname>.firebaseio.com/metals").startAt(1).endAt(3); 
$scope.metals = $firebase(metals); 

Ma structure de données:

{ 
    "metals" : [ null, 
    { 
     "id" : 1, 
     "metal" : "Aluminium", 
     "element" : "Au" 
    }, { 
     "id" : 2, 
     "metal" : "Silver", 
     "element" : "Ag" 
    }, { 
     "id" : 3, 
     "metal" : "Copper", 
     "element" : "Cu" 
    }, { 
     "id" : 4, 
     "metal" : "Tin", 
     "element" : "Sn" 
    }, { 
     "id" : 5, 
     "metal" : "Nickel", 
     "element" : "Ni" 
    }, { 
     "id" : 6, 
     "metal" : "Iron", 
     "element" : "Fe" 
    }] 
} 

vue HTML:

Répondre

3

Le premier paramètre passé en startAt est une priorité, pas une clé d'enregistrement. Comme il ne semble pas que vous avez besoin d'une clé ou d'une priorité dans ce cas, vous pouvez simplement cette syntaxe pour accrocher les trois premiers éléments:

new Firebase(URL).startAt().limit(3) 

De plus, le « id » stocké dans chaque enregistrement de l'exemple les données ne sont pas la clé pour cet enregistrement, c'est juste un autre champ dans les données et pourrait aussi bien être "foo" ou n'importe quel autre nom arbitraire, en ce qui concerne l'interrogation.

Lorsque ces enregistrements sont stockés dans Firebase, le tableau est converti en objet et les index sont utilisés comme clés pour chaque entrée. Donc, l'id du premier enregistrement serait 0, pas 1. Donc, si je voulais saisir la deuxième à la quatrième enregistrements (par exemple 1 à 3 que vous avez essayé), je pouvais le faire:

new Firebase(URL).startAt(null, 1).limit(3) 

S'il vous plaît avoir une lecture approfondie du doc ​​lists of data et notre blog sur array best practices; la plupart du temps, vous voudrez les éviter et utiliser des identifiants uniques.

Questions connexes