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

AngularFire doesn't detect changes if persistence is enabled

我正在使用 AngularFire 并在我的 app.module.ts:

中启用了离线支持的持久性
imports: [
   AngularFireModule.initializeApp(environment.firebase),
   AngularFirestoreModule.enablePersistence()
]

当我的应用程序启动时,我使用 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);
});

对我来说很奇怪,如果我从应用程序的另一个来源对数据库进行修改,例如,如果我将自己登录到 Google Firestore 控制台并手动修改用户数据中的值,这些不会获取数据。

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

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

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

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

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

提前感谢您的帮助

5 分钟后...正是我的问题是我没有监听更改,只读取一个值 (take(1)),分别读取本地持久化的值,之后仅此而已, 因此不会获取更新后的值