我想向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",
答案 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