背景
通过angularfire从firebase的firestore获取数据的大多数示例:
(a)展示
Observable<any[]>
要获取数据:
export class AppComponent {
items: Observable<any[]>;
constructor(db: AngularFirestore) {
this.items = db.collection('items').valueChanges();
}
}
(b)使用管道将其与模板绑定到
async
:
<ul>
<li class="text" *ngFor="let item of items | async">
{{item.name}}
</li>
</ul>
形势
我看不到如何简单地获取
data: SomeModel[]
而不是
data: Observable<SomeModel[]>
…经过一番挣扎,我找到了一个解决办法:
async getData(): Promise<SomeModel[]> {
return await new Promise((resolve, reject) => {
this.myCollection.snapshotChanges().subscribe(data => {
this.data = data.map(e => {
return {
id: e.payload.doc.id,
...e.payload.doc.data()
};
});
resolve(this.data);
});
});
}
问题
但作为这个领域的新手,我的解决方案让人觉得做作,我在寻找如何做到最好的方法。谢谢你抽出时间!