如果你想把 is 当作一个 Promise,你可以把它转换成一个 Promise。这不是黑客攻击,一旦get() 只产生一个发射。但是 Firebase 希望您能够处理来自 get() 的流。无论如何,将其转换为承诺:
db.collection("cities").get().toPromise()
.then((querySnapshot: QuerySnapshot<DocumentData>) => {
querySnapshot.forEach((doc: any) => {
// doc.data() is never undefined for query doc snapshots
console.log(doc.id, " => ", doc.data());
});
如果您决定处理来自 get() 的流式传输,正如 Firebase API 所期望的那样:
db.collection("cities").get()
.subscribe((querySnapshot: QuerySnapshot<DocumentData>) => {
querySnapshot.forEach((doc: any) => {
// doc.data() is never undefined for query doc snapshots
console.log(doc.id, " => ", doc.data());
});
[更新] 1:基于文档,有一个用于获取快照的新 API,使用 onSnapshot 方法:
db.collection("cities")
.onSnapshot((querySnapshot: QuerySnapshot<DocumentData>) => {
querySnapshot.forEach((doc: any) => {
// doc.data() is never undefined for query doc snapshots
console.log(doc.id, " => ", doc.data());
});