2016-06-24 11 views
0

Ich habe ein paar Probleme zu verstehen, wie man mit einem Strom von Objekten, die von einem angularfire 2 Observable emittiert wird, umzugehen.Get single values ​​from angularfire 2 beobachtbar

Schauen Sie sich das Beispiel:

// create observable 
var observalbe = Rx.Observable.range(1, 3); 

// Prints out each item 
var subscription = observalbe.subscribe(
    x => console.log(x) 
); 

erhalten Sie folgende Ausgabe:

// 1 
// 2 
// 3 

Das ist das Verhalten, das ich erwarte ich, wenn zu einer beobachtbaren abonnieren, soweit ich es verstehe.

Jetzt möchte ich auf eine Echtzeit-db-Sammlung auf Feuerbasis mit angularfire 2 abonnieren:

// af is an instance of AngularFire-Service that is injected in the constructor 
var observable = af.database.list('/items'); 

observable.subscribe(
    x => console.log(x) 
); 

Ich hatte erwartet, dass meine Pfeil-Funktion für jedes einzelne Objekt aufgerufen wird, die in dieser Sammlung vorhanden ist, und dass Es wird auch jedes Mal aufgerufen, wenn ein neues Element zur Firebase-Sammlung hinzugefügt wird.

Stattdessen wird die Pfeilfunktion nur einmal aufgerufen und ein Array mit allen Objekten gegeben. Wenn ein neues Objekt zur Sammlung hinzugefügt wird, wird die Pfeilfunktion erneut aufgerufen und es wird erneut die gesamte Sammlung übergeben, und nicht nur das neue Objekt.

Mache ich hier etwas falsch? In meinem Fall würde ich sehr bevorzugen, dass die Pfeilfunktion für jedes Element in der Sammlung aufgerufen wird.

Gibt es einen Weg, dies zu erreichen?

Antwort

3

Es hängt wirklich davon ab, was Sie versuchen zu tun, denke ich, aber Sie können es zuordnen.

observable.subscribe(x => { 
    x.map(y => console.log(y)); 
});