无法从Angular Service获取代码

时间:2019-02-23 12:55:00

标签: angular typescript firebase-realtime-database ionic3 local-storage

我正在Angular 5服务中使用本地存储(https://github.com/cyrilletuzi/angular-async-local-storage)。首先,我想从存储中加载数据。如果该值不存在,我想从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 :(得分:2)

选中this demo link

您一定做错了,请通过以下方式播放:

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

一旦设置好该值,然后用注释行重新加载页面。

以防万一,这无济于事,请分叉并复制场景并告诉我

答案 1 :(得分:1)

localStorage.getItem函数仅返回一个值,而不是可观察的。实际上很简单。

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