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

问题描述 投票:2回答:1

我正在使用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)),因此永远不会获取更新的值?

请事先提供帮助

angular google-cloud-firestore angularfire2 angularfire
1个回答
3
投票

5分钟后...确切地说我的问题是我不是在听取变化而只是读取一个值(take(1)),分别是本地持久的值将被读取而不再是后来的,因此更新后的值将不会是取

© www.soinside.com 2019 - 2024. All rights reserved.