如何在AngularFire可观察列表上正确迭代? 我不确定如何处理数据,因为每个响应都返回列表中的所有成员加上一个新成员(如"金字塔") -
first response: [{obj1}]
second response: [{obj1}, {obj2}]
third response: [{obj1}, {obj2}, {obj3}]
我尝试在我的代码中实现两个解决方案,它们似乎都不是正确的方法。
第一个解决方案使用rxjs map - 但它太过分了,因为它每次迭代整个响应。
getAllSchools(): Observable<any> {
return this.angularFire.database.list('schools').map((response) => {
return response.map(school => {
return \\do something to school\\
})
})
}
这意味着在上面的示例中(迭代schools
列表)&#34; 对学校做了一些事情&#34;将被执行到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)
})
})
})
}
这是一个非常基本的问题,我确信解决方案非常简单&#34;。尽管如此,我还是找不到明确的解决方案。
是否有必要使用其他库,例如one?
非常感谢!
答案 0 :(得分:0)
angularFire最新版本更新(仅一周前)解决了这个问题。跑完&#34; npm i angularfire2 @ next&#34; (&#34; angularfire2&#34;:&#34; ^ 2.0.0-beta.7.1-pre&#34;),一切正常。