javascript - Angular Firebase 2 检查用户是否存在然后添加到数据库

标签 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",

最佳答案

我认为将 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

关于javascript - Angular Firebase 2 检查用户是否存在然后添加到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48521736/

相关文章:

javascript - node.js 正则表达式字符串参数中的匹配组不起作用

ios - swift 不能在 firebase 数据库中创建一个 child

ios - Firebase 数据返回 Nil

javascript - 我不能在 Android 上使用嵌入式 <style> CSS 吗?

javascript - 如何使用 javascript 返回 DOM 元素的 id,而不是元素的值

javascript - 检索包含与查询匹配的文档子集和匹配总数的文档

angular - 使用 CLI 删除组件的最佳方法是什么

javascript - 如何在 Angular 中对嵌套订阅方法进行单元测试?

c# - 如何在 Angular 6 中下载 Excel 文件

azure - 我需要将 Firebase 连接到 Azure 通知中心吗?