我正在尝试使用AngularFire2从firestore获得一个简单的(在我看来)2步查询,但我似乎无法理解该怎么做。
getProfile(): Observable<User>{
return this.afAuth.authState.map(user => {
return this.db.doc<User>('user/'+user.uid).valueChanges();
});
}
我不断获得以下内容:输入'Observable&gt;'不能分配给'Observable'类型。类型'Observable'不能指定为'User'类型。 “Observable”类型中缺少属性“name”。
什么,祈祷告诉我,我在这里失踪
答案 0 :(得分:0)
所以在查看FireBase documentation here后,我的建议如下:
getProfile(): Observable<User>{
return this.afAuth.authState.map(user => {
return this.db.doc<User>('user/'+user.uid)
.valueChanges()
.map(fUser=>{
// code here to construct user object if needed
return fUser;
});
});
}
<强>解释强>
由于FireBase使用以下设计存储其变量:
user: Observable<any[]>';
constructor( ... ){
this.items = db.collection('items').valueChanges();
}
您需要通过使用map()函数从valueChanges()返回的Observable中提取单个用户对象。
我还创建了一个StackBlitz here来展示概念证明。
答案 1 :(得分:0)
所以我认为答案很简单:
getProfile$(): Observable<User>{
return this.afAuth.authState.flatMap(user => {
return this.db.doc<User>('user/'+user.uid).valueChanges();
});
}
尝试理解Observables @ midnight
并不好