0

我正在处理的 Angular 项目遇到一些问题。

我决定将 Angular7 与 Firebase 一起使用(AngularFire v5)

在我的 AuthService

export class AuthService {
private authState: Observable<firebase.User>;
public currentUser: firebase.User;
private profileDoc: AngularFirestoreDocument<Item>;
private profile$: Observable<Item>;

export class AuthService {
private authState: Observable<firebase.User>;
public currentUser: firebase.User;
private profileDoc: AngularFirestoreDocument<Item>;
private profile$: Observable<Item>;

constructor(public afAuth: AngularFireAuth, private afs: AngularFirestore) {
    this.authState = this.afAuth.authState;
    this.afAuth.authState.subscribe((user: firebase.User) => {
        this.currentUser = user;
        if(user !== null && user.uid) {
            this.profileDoc = this.afs.doc<Item>('users/' + user.uid);
            this.profile$ = this.profileDoc.valueChanges();
        }
    });
}

get profile() : Observable<Item> {
    return this.profile$;
}
}

我试图在用户登录时获取对用户个人资料的 Firestore 引用,并在组件的前端显示用户的名字和姓氏。

但是当我尝试访问配置文件以订阅它时:

 this._auth.profile.subscribe((profile) => {
        console.log("Profile", profile);
 });

它给了我错误。

错误类型错误:无法读取未定义的属性“订阅”

4

1 回答 1

0

您可以创建一个函数,在其中使用 AngularFireAuth 服务直接获取用户的 uid,然后对 firestore 进行查询,如下所示

constructor(private afAuth: AngularFireAuth, private afs: AngularFireStore) {}

getProfile() {
   const userId = this.afAuth.auth.currentUser.uid;
   const doc = this.afs.doc('path' + userId );
   return doc.valueChanges();
   // then subscribe to this in the component
}

希望能帮助到你

于 2019-11-04T14:01:18.843 回答