Angular Firebase Cloud возвращает неверные данные - PullRequest
1 голос
/ 10 февраля 2020

У меня проблема с Angular 8 и облачной базой данных Firebase. Если я получаю свой пользовательский документ изначально, это правильно. Затем я вызываю некоторые логики c, которые изменяют только некоторые значения, но не все. Затем я перезагружаю пользователя, но некоторые значения не верны, даже если они не обновляются. Это действительно странно, и я не знаю, почему это происходит. Вот мой фрагмент кода:

    // 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);
        }
    }

AuthService:

    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 данные верны.

журнал консоли правильный журнал консоли неправильный

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...