【问题标题】:Code from Angular Service is not reachable来自 Angular 服务的代码无法访问
【发布时间】:2019-07-17 10:04:49
【问题描述】:

我在 Angular 5 服务中使用本地存储 (https://github.com/cyrilletuzi/angular-async-local-storage)。首先,我想从存储中加载数据。如果该值不存在,我想从 firebase 加载数据。但是,如果我检查数据是否存在,则无法从服务访问数据库请求...我收到错误TypeError: Cannot read property 'subscribe' of undefined

PS:这个例子中肯定不存在“user”这个值。

我试过了

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;
      }
    }, () => {
    })
  }

【问题讨论】:

  • this:this.localStorage.getItem('user') 不返回可观察对象!
  • 但是如果用户不存在,我会返回一个 Observable...
  • 如果它存在那么你返回什么??:>
  • 还没有:-)
  • 所以你得到了未定义的错误。问题解决了。

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


【解决方案1】:

检查this demo link

你一定是做错了什么,通过评论玩转:

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

一旦设置了值,然后重新加载带有注释行的页面。

如果这没有帮助,请随时 fork 它并复制场景并告诉我

【讨论】:

  • preview-ee4d58d6ef0576b4e139b.js:1 ERROR TypeError: Cannot read property 'firstName' of null (angular-qlhtg7.stackblitz.io)
  • @eleinad:我的错。它不起作用,因为我输入了一个错误 let user: { firstName: 'Henri', lastName: 'Bergson' };,它应该是 let user = { firstName: 'Henri', lastName: 'Bergson' };
  • @eleinad 您能否确认并将其标记为答案,以便对其他人也有帮助
【解决方案2】:

localStorage.getItem 函数只返回一个值,而不是一个 observable。它实际上非常简单。

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

【讨论】:

  • TypeError: Cannot read property 'subscribe' of undefined ...:/
  • if (typeof user != observable) 会工作......它也正确吗? :-)
  • 不能订阅localStorage.getItem,它返回一个字符串。
  • typeof user != observable,也不起作用,因为它再次返回字符串。 localStorage 不是数据库,它更像是一个对象变量,但存储在 chrome 中。
  • 我正在使用以下异步本地存储插件:github.com/cyrilletuzi/angular-async-local-storage
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多