如果启用持久性,AngularFire 不会检测更改

Dav*_*sco 4 angularfire angularfire2 angular google-cloud-firestore

我正在使用AngularFire并在我的中启用了离线支持的持久性app.module.ts

imports: [
   AngularFireModule.initializeApp(environment.firebase),
   AngularFirestoreModule.enablePersistence()
]
Run Code Online (Sandbox Code Playgroud)

valueChanges()当我的应用程序启动时,我使用如下方式检索用户:

const doc: AngularFirestoreDocument<User> = this.myCollection.doc<User>(userId);

doc.valueChanges().pipe(take(1)).subscribe((user: User) => {
    console.log(user);
}, (err) => {
    console.err(err);
});
Run Code Online (Sandbox Code Playgroud)

对我来说奇怪的是,如果我将来自其他来源的修改作为应用程序应用于数据库,例如,如果我将自己登录到 Google Firestore 控制台并手动修改用户数据中的值,则不会获取这些数据。

如果我重新启动应用程序,它将始终获取本地保留的数据,并且永远不会注意到这些值已更改。

如果我分别删除持久性,则enablePersistence()可以正确获取数据。

你知道问题的原因是什么吗?

在这种情况下我不应该使用吗valueChanges()

或者发生这种情况是因为我只获取该值一次(请参阅take(1)),因此永远不会获取更新的值?

提前感谢您的帮助

Dav*_*sco 5

5分钟后...我的问题是这样的事实:我没有监听更改,只读取一个值(take(1)),分别读取本地持久化的值,然后不再读取任何其他值,因此不会获取更新的值