我正在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;
}
}, () => {
})
}
答案 0 :(得分:2)
您一定做错了,请通过以下方式播放:
this.localStorage.setItem('user', user).subscribe(() => { });
一旦设置好该值,然后用注释行重新加载页面。
以防万一,这无济于事,请分叉并复制场景并告诉我
答案 1 :(得分:1)
localStorage.getItem函数仅返回一个值,而不是可观察的。实际上很简单。
var user = localStorage.getItem('user');
if(typeof user === 'undefined') {
// do you firebase syncing here.
}