2017-01-02 10 views
2

AngularFire観測可能リストに対して、どのように正しく反復処理しますか? 私は、各応答は、すべてのリストのメンバープラス(「ピラミッド」のような)新しいものを返すようデータを処理するかどうかはわかりません -AngularFire観測リストを反復処理する方法は?

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

私は、私のコードで2つのソリューションを実装してみましたそれらのどれも正しい道のように見えません。

最初の解決策はrxjsマップを使用しますが、毎回レスポンス全体を繰り返し処理するので、あまりにも重すぎます。 「学校に何かをする」(これschoolsリストを反復処理)上記の例でschool2までの時間をschool1に再度、school1に実行され、最初にすることを意味

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

。その後、私が実装しようとしたschool1からschool1に三回、二回目school2に、初めて、等

第2の解決策は、preserveSnapshotを使用していました。ここで問題となるのは、データの各部分を1回だけ返すことが肯定的ではないということです。

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) 
       }) 
      }) 
    }) 
} 

これは非常に基本的な質問です。解決方法は非常に単純です。それにもかかわらず、私は明確なカットソリューションを見つけることができませんでした。

oneのような別のライブラリを使用する必要がありますか?

ありがとうございました!

+1

は、この問題のように聞こえる:https://github.com/angular/angularfire2/issues/574 – cartant

答えて

0

最新のバージョンのangularFireで解決された問題(ちょうど1週間前)。 "npm i angularfire2 @ next"( "angularfire2": "^ 2.0.0-beta.7.1-pre")を実行すると、すべて正常に動作します。多くのための

からhttps://github.com/angular/angularfire2/issues/574

関連する問題