javascript - Angular Firebase Cloud 返回不正确的数据
问题描述
我对 Angular 8 和 Firebase 云数据库有疑问。如果我最初得到我的用户文档是正确的。然后我调用一些只改变一些值但不是全部的逻辑。然后我重新加载用户,但有些值不正确,即使它们没有更新。这真的很奇怪,我不知道为什么会这样。这是我的代码片段:
// if the user is set return the user, if not set get user from firebase, if withRefresh is true always refresh user
GetUser(withRefresh?: boolean): Observable<User> {
if (this.user == null || withRefresh) {
return this.authService.GetUser().pipe(map(user => {
console.log(user);
this.user = user;
return this.user;
}));
} else {
return of(this.user);
}
}
认证服务:
GetUser(): Observable<User> {
return this.afAuth.authState.pipe(switchMap((user) => {
if (user) {
return this.afs.doc<User>(`users/${user.uid}`).valueChanges();
} else {
this.LogOut();
}
}));
}
这是在我的仪表板中调用第一个 GetUser 方法的地方:
SyncActivities() {
this.appStore.GetUser().pipe(take(1)).subscribe((user) => {
if (this.appStore.user != null) {
this.syncActivitiesService.Synchronize(this.appStore.user);
}
});
}
在我的 Snychronize 函数结束时,我重新加载用户和活动。这会返回错误的值。
if (i === activities.length - 1) {
this.appStore.GetUser(true).pipe(take(1)).subscribe(() => {
this.appStore.GetUserActivities(true);
});
}
在 Firebase Cloud 上,数据是正确的。
解决方案
推荐阅读
- c# - 在 ListBox 中未触发具有 NotifyOnSourceUpdated 的 SourceUpdated
- javascript - 在 html 页面加载之前加载 php
- reactjs - 如何在 React with Webpack 中使用 CommonJS 模块?
- tensorflow - 编译 tensorflow 1.6+ Windows 10 no AVX
- python - 如何根据条件语句拆分数组?
- c# - 删除文档数据库成功但没有响应资源
- android - 所有库必须使用相同的版本
- javascript - 第二个或嵌套的 event.PreventDefault() 不起作用
- javascript - Angular将样式标签添加到innerHTML
- apache-beam - 使用 tensorflow 变换的 writeTransform 函数时出错