Angular2 / Firebase - 使用Observables

时间:2017-05-30 19:39:03

标签: angular firebase angularfire2 angular2-observables

我正在学习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;        
      }
    });
  }
}

1 个答案:

答案 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

的示例