2017-01-02 2 views
2

Как вы правильно относитесь к наблюдаемому списку AngularFire? Я не уверен, как обрабатывать данные, как каждый ответ возвращает все элементы списка плюс нового (как «пирамида») -Как перебирать наблюдаемый список AngularFire?

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

Я пытался реализовать два решения в моем коде, ни один из них не кажется правильным путем.

Первое решение использует карту rxjs - но она слишком чрезмерна, так как она итерации по всему ответу каждый раз.

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

Это означает, что в приведенном выше примере (который перебирает schools списке) «сделать что-то в школе» будет выполнен в school1, затем снова school1, и первый раз в school2. Затем третий раз, чтобы school1, второй раз к school2, и впервые в school1 и т.д.

Второе решение, которое я пытался реализовать использовал preserveSnapshot. Проблема здесь в том, что я не уверен, что он возвращает каждую часть данных один раз и один раз.

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 очень последней версии обновления (всего неделю назад). После запуска «npm i angularfire2 @ next» («angularfire2»: «^ 2.0.0-beta.7.1-pre») все работает нормально.

больше - https://github.com/angular/angularfire2/issues/574