2017-01-02 81 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

回答