我正在使用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)
),因此从未获取更新过的值吗?
提前寻求帮助
答案 0 :(得分:3)
5分钟后...我的问题恰恰是我没有在听更改,而是只读取一个值(take(1)
),因此将分别读取本地持久化的值,此后什么也没有了,因此更新的值将不会被获取