我一直在尝试将Angular应用程序制作为可从Firebase Firestore获取数据的Angular Universal应用程序。
我一直在遵循以下指南:
https://fireship.io/lessons/angular-universal-firebase/
即使使用valueChanges()
方法从Firestore获取数据,初始编译和所有工作都可以正常工作。
但是,如果我将valueChanges()
更改为get()
并在DocumentSnapshot
上进行必要的调整,似乎通用方法不会等待数据被获取并呈现。
模板文件
<div class="desc" *ngIf="(task | async) as ts">
{{ts.description}}
</div>
工作代码
export class Task {
colRef: AngularFirestoreCollection;
constructor(private db: AngularFirestore) {
this.colRef = this.db.collection(this.COL_NAME);
}
ngOnInit() {
this.task = this.colRef.doc(id).valueChanges();
}
}
无效代码
export class Task {
colRef: AngularFirestoreCollection;
constructor(private db: AngularFirestore) {
this.colRef = this.db.collection(this.COL_NAME);
}
ngOnInit() {
this.task = this.colRef.doc(id).get().pipe(map(docSnapshot => docSnapshot.data()));
}
}
答案 0 :(得分:0)
valuechanges()
是包angularFire
内的方法,它返回Observable
,而get()
方法位于firestore包内,并返回Promise
。因此,不能将pipe
与get()
一起使用
Angularfire:
https://github.com/angular/angularfire/blob/master/docs/firestore/documents.md#valuechanges
get()
:
https://firebase.google.com/docs/firestore/query-data/get-data#get_a_document