我正在使用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)
),分别是本地持久的值将被读取而不再是后来的,因此更新后的值将不会是取