每次更新发生时都不检索整个数据库,添加实时监听器

时间:2018-02-08 03:22:32

标签: angular firebase ionic3 google-cloud-firestore angularfire2

你能解释一下这对Firestore的意义吗?

  

使您的应用中的数据保持最新状态,而无需检索整个数据   数据库每次更新发生时,添加实时监听器。添加   应用程序的实时监听器会通过数据快照通知您   每当您的客户端应用收听数据时,   只检索新的更改。

它说的是这个还是其他?

this.budgets$ = this.budgetProvider.getSpecificBudgetGroupBudgets(data, 
this.projectProvider.projectId).valueChanges();

2 个答案:

答案 0 :(得分:1)

实时侦听器的行为与websockets相同,因此无需定期运行相同的查询以查看是否有任何数据发生了变化。

Get Realtime Updates with Cloud Firestore文档提供了一些很好的示例。这是其中之一:

db.collection("cities").doc("SF")
    .onSnapshot(function(doc) {
        console.log("Current data: ", doc.data());
    });

onSnapshot方法会为DocumentSnapshot个事件附加一个侦听器。

答案 1 :(得分:1)

据我所知,在firestore docs中,他们谈论的是onSnapshot(),它是一个实时监听器,get()不是。 onSnapshot()会收听这些单独的文档更改addedremovedmodified,您可以收听此doc中的每个案例。

并且Angularfire2是通过这些firebase本机jsdk方法编写的库并执行相同操作但将返回Observables。以下是官方doc所说的

  

AngularFirestoreCollection服务是本机Firestore SDK的CollectionReference和Query类型的包装器。它是一种通用服务,为您提供了一组用于操作和传输数据的强类型方法。此服务旨在用作@Injectable()。

以下是返回类型link

valueChanges(events?: firebase.firestore.DocumentChangeType[]): Observable<T[]>;

DocumentChangeType[]有以下参数

export type DocumentChangeType = 'added' | 'removed' | 'modified';