【发布时间】:2020-01-27 04:02:26
【问题描述】:
我使用 angularfirebase 创建了一个带有 Firestore 的 Angular 8 应用程序。
该应用程序应该可以离线工作,这可以通过在 firebase 上启用持久性来正常工作。 (并为 Angular 创建一个 serviceworker 等)。
现在我像这样从 Firestore 中获取我的数据
public async get(): Promise<Customer[]> {
return await this.itemsCollection.valueChanges({ idField: 'id' }).pipe(take(1)).toPromise();
}
我不喜欢使用异步管道方法的 observables,因为它让一切都变得过于复杂。
我现在遇到的问题是,如果我在 firestore 本身或另一台设备上更新某些数据,则本地数据不会更新。刷新页面后,它会继续获取旧的缓存 Firestore 数据。 我试图通过清除持久性缓存来解决这个问题,但我不知道将它放在我的代码中的哪个位置以使其工作。
private db: AngularFirestore, // in constructor
this.db.firestore.clearPersistence(); // somewhere after initializing firebase
我也认为这不是一个很好的生产就绪解决方案。
我该如何解决这个问题?
也许我应该去寻找可观察对象并重写所有内容。
【问题讨论】:
-
听起来你确实想要一个
Observable,它是一个数据流,而Promise只给你一个一次性的值。如果您希望实时更新值,请重新考虑使用带有 Observables 的异步管道。 -
不,它不需要实时更新,但是当我刷新页面时,我希望得到新数据而不是本地缓存数据
标签: angular firebase google-cloud-firestore persistence offline