【发布时间】:2021-05-13 04:05:03
【问题描述】:
我在我的 Angular (11.1.1) 项目中使用AngularFire (6.1.4) 并具有离线持久性,我很惊讶地看到在加载时提供了两次数据:一次来自缓存,一次来自服务器(我使用变量fromCache来证明来源)。
app.module.ts
import { AngularFirestoreModule } from '@angular/fire/firestore';
import { AngularFireModule } from '@angular/fire';
import { AngularFireAuthModule } from '@angular/fire/auth';
@NgModule({
imports: [
AngularFireModule.initializeApp(Config),
AngularFirestoreModule.enablePersistence(),
AngularFireAuthModule
]
})
export class AppModule { ...}
数据库服务
this.firestoreRef.collection(collectionName, query)
.snapshotChanges()
.pipe(
map(actions => actions.map(a => {
console.log('fromCache -> ', a.payload.doc.metadata.fromCache);
}))
).subscribe(/* Just for TEST purposes */);
我认为get() 选项的相同逻辑将适用:
设置为默认值(或根本不设置)会导致 Firestore 尝试检索最新的(服务器检索的)快照,但如果无法访问服务器,则会退回到返回缓存数据。
如果用户在线,为什么还会返回缓存的数据?
当然,我可以监听离线/在线事件(尽管它们不可靠)甚至是软件来检查客户端是否在线,并相应地使用或跳过缓存的结果,但 Firestore 不应该检测在线/离线状态?
【问题讨论】:
-
投反对票的用户至少可以解释为什么这样做。至少我和其他人可以改进问题或进一步完善它们。我在文档中找不到我的问题的答案。只根据“感觉”投票是一种可悲的习惯
标签: javascript angular firebase angularfire2 angularfire2-offline