我正在学习Angular2,我正在编写一个基于Firebase的应用程序,但由于Observables,我很困惑。
当我检查用户是否已登录时(如果是),我想从数据库中提取额外信息。但如果它们还不存在,那就创造然后得到它们。
我已经编写了代码,似乎工作正常。我的问题是,处理它的正确方法是什么?
我的代码:
export class AuthService {
user: FirebaseObjectObservable<any>;
constructor(private db: AngularFireDatabase, private auth: AngularFireAuth) {
this.auth.authState.subscribe(user => {
if (user) {
this.db.object('/users/' + user.uid).subscribe(info => {
if (info.uid) {
this.user = info;
} else {
this.db.object('/users/' + user.uid).set({ uid: user.uid });
}
});
} else {
this.user = null;
}
});
}
}
答案 0 :(得分:1)
我使用电子邮件和密码创建了一个登录信息
user: Observable<firebase.User>;
items: FirebaseListObservable<any[]>;
constructor(private afAuth: AngularFireAuth, private db: AngularFireDatabase) {
this.user = this.afAuth.authState;
this.items = db.list
}
loginEmail(email, password) {
this.afAuth.auth.signInWithEmailAndPassword(email, password);
}
现在您可以检查用户是否已登录
this.user有authstate(boolean)
if (this.user){
this.item.push({users:,this.afAuth.auth.currentUser.uid})
[..]
也许这个链接可以帮助你
Firebase用户1
使用Observable创建留言板2
的示例