[英]How to detach a listener for a Firestore collection made with AngularFire?
[英]Adjust Firestore cache size with AngularFire
我正在嘗試找出啟用 Firestore 持久性和使用 AngularFire 調整緩存大小的最佳方法。
Firebase 文檔建議我們這樣做:
firebase.firestore().settings({
cacheSizeBytes: firebase.firestore.CACHE_SIZE_UNLIMITED
});
AngularFire 沒有提到調整此類設置,但深入研究代碼,您似乎可以像這樣傳遞類型為“firebase.firestore.PersistanceSettings”的 object:
AngularFirestoreModule.enablePersistence({
experimentalForceOwningTab: true,
synchronizeTabs: true,
}),
但是,這些是 PersistanceSettings 類型中唯一允許的兩個屬性。
我嘗試在 app.module.ts 中創建構造函數並根據 Firebase 文檔進行操作,但我什至不確定它是否正常工作。
export class AppModule {
constructor() {
firebase.firestore().settings({
cacheSizeBytes: firebase.firestore.CACHE_SIZE_UNLIMITED,
});
}
}
如何在運行時檢查緩存大小設置? 我做對了嗎?
CACHE_SIZE_UNLIMITED
是-1
,最好在app.module.ts
設置:
const settings: firebase.firestore.Settings = {
cacheSizeBytes: firebase.firestore.CACHE_SIZE_UNLIMITED
};
firebase.firestore().settings(settings);
似乎沒有讀取settings
的方法...... cacheSizeBytes
已經知道了。
並且一旦連接,也可能無法更改cacheSizeBytes
的值。
搜索 AngularFire 文檔,我發現他們的文檔與離線存儲相關。 它解釋了如何在您的應用程序中啟用文件持久性,以及您可以使用fromCache
屬性測試是否從緩存或 Firestore 中檢索文檔。
要檢查您是從服務器還是緩存接收數據,請使用快照事件中 SnapshotMetadata 上的 fromCache 屬性。 如果 fromCache 為真,則數據來自緩存並且可能是陳舊的或不完整的。 如果 fromCache 為 false,則數據是完整的並且是服務器上的最新更新。
至於為 Firestore 設置緩存大小,似乎唯一的方法是您一直在嘗試的方法,它是 Firestore 實例屬性中設置的變量。 以下是與設置緩存大小和啟用持久性相關的文檔中的完整示例。
我遇到了同樣的問題,但找到了一種在 GitHub 上設置它的方法。
import { AngularFirestoreModule, SETTINGS } from '@angular/fire/firestore';
@NgModule({
imports: [
AngularFirestoreModule,
AngularFireAuthModule,
AngularFireStorageModule,
AngularFireModule.initializeApp(environment.firebase),
],
providers: [
{
provide: SETTINGS,
useValue: { ignoreUndefinedProperties: true, cacheSizeBytes: 1048576 },
};
]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.