Код от Angular Service недоступен - PullRequest
0 голосов
/ 23 февраля 2019

Я использую локальное хранилище (https://github.com/cyrilletuzi/angular-async-local-storage) в службе Angular 5. Сначала я хочу загрузить данные из хранилища. Если значение не существует, я хочу загрузить данные из firebase. Но если япроверить, существуют ли данные, запрос к базе данных недоступен из службы ... Я получаю ошибку TypeError: Cannot read property 'subscribe' of undefined.

PS: значение "пользователь" определенно не существует в этом примере.

Вот что я попробовал

getDbFromUser(uid) {

    this.localStorage.getItem('user').subscribe((data) => {
      if (data) {
        console.log(data);
      } else {
        console.log('Nothing found');
        // Load data from Firebase
        this.dataObjRef = this.afDatabase.object(`data/users/${uid}`);
        this.data = this.dataObjRef.valueChanges();
        return this.data;
      }
    }, () => {
    })
  }

Ответы [ 2 ]

0 голосов
/ 23 февраля 2019

Проверьте эту демонстрационную ссылку .

Вы, должно быть, делаете что-то не так, Поэкспериментируйте, комментируя:

this.localStorage.setItem('user', user).subscribe(() => { });

, как только значение установлено, и затем перезагрузитестраница с комментариями

0 голосов
/ 23 февраля 2019

Функция localStorage.getItem просто возвращает значение, а не наблюдаемое.Это на самом деле довольно просто.

var user = localStorage.getItem('user');
if(typeof user === 'undefined') {
   // do you firebase syncing here.
}
...