2017-01-02 4 views
2

Wie iterieren Sie ordnungsgemäß über eine beobachtbare AngularFire-Liste? Ich bin nicht sicher, wie die Daten zu handhaben, da jede Reaktion alle Mitglieder der Liste zurückgibt und eine neue (wie eine „Pyramide“) -Wie man über eine beobachtbare Liste von AngularFire iteriert?

first response: [{obj1}] 
second response: [{obj1}, {obj2}] 
third response: [{obj1}, {obj2}, {obj3}] 

Ich habe versucht, zwei Lösungen in meinem Code zu implementieren, keiner von ihnen scheint der richtige Weg zu sein.

Die erste Lösung verwendet rxjs map - aber es ist zu übertrieben, da es jedes Mal über die gesamte Antwort iteriert.

getAllSchools(): Observable<any> { 
    return this.angularFire.database.list('schools').map((response) => { 
     return response.map(school => { 
      return \\do something to school\\ 
     }) 
    }) 
} 

Das bedeutet, dass in dem obigen Beispiel (die iteriert über schools Liste) die „etwas in der Schule tun“ würde school1 ausgeführt wird, dann wieder zu school1 und erstmals school2. Dann drittes Mal school1, zum zweiten Mal zu school2 und erstmals school1 usw.

Zweiter Lösung, die ich versucht wurde mit preserveSnapshot zu implementieren. Das Problem hier ist, dass ich nicht positiv bin, dass es jedes Stück Daten nur einmal und einmal zurückgibt.

getAllSchools(): Observable<ISchool> { 
    return new Observable(observer => { 
     this.angularFire.database.list('schools', { preserveSnapshot: true }) 
      .subscribe(snap => { 
       snap.forEach((school) => { 
        ///do things to school/// 
        observer.next(school) 
       }) 
      }) 
    }) 
} 

Es ist eine sehr grundlegende Frage und ich bin mir sicher, dass die Lösung sehr "einfach" ist. Trotzdem konnte ich keine klare Lösung finden.

Muss eine andere Bibliothek verwendet werden, z. B. one?

Vielen Dank!

+1

Klingt wie dieser Ausgabe: https://github.com/angular/angularfire2/issues/574 – cartant

Antwort

Verwandte Themen