![](/img/trans.png)
[英]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.