AngularFirebase 2检查用户是否存在然后添加到数据库

时间:2018-01-30 12:40:13

标签: javascript angular firebase firebase-realtime-database

我想向firebase实时数据库添加新用户,我已设法查询数据库以查找电子邮件输入是否已存在

onSubmit(form: NgForm){

    var user = this._visitorService.getIndividualVisitor(form.value.email);

    user.valueChanges().subscribe(list=>{
      console.log(list);
      if(list.length ===0 ){
        console.log('email doesnt exist, creating new user');
        this._visitorService.addVisitor(form.value)  
      } else{
        console.log('email existst');
        this._visitorService.updateVisitor(form.value)
      }
    })
}
  
getIndividualVisitor(email:string){
    this.list = this.firebase.list('visitors', ref => ref.orderByChild('email').equalTo(email));
    return this.list;
}

我遇到的问题是每次更新数据库时都会调用user.valueChanges() 这意味着每次添加新用户时,也会调用更新用户函数,这样做的正确方法是什么。 我正在使用"angularfire2": "^5.0.0-rc.4","firebase": "4.8.0",

1 个答案:

答案 0 :(得分:1)

我认为将Firebase Auth与Cloud Functions结合使用可以解决您的问题。

使用Firebase Authentication创建用户。

然后部署一个侦听用户OnCreate事件的Cloud Function。

exports.newUser = functions.auth.user().onCreate(event => {
  // Add something to your database here.
});

云功能触发器的文档可在此处找到:Firebase Authentication Triggers