【发布时间】:2018-07-22 02:16:32
【问题描述】:
我有一个包含九个字段的表单。用户将填写这些字段,然后他将单击保存按钮。 保存按钮会将这些信息从它们转换为一个对象并将它们发送到我的服务,其中一个特定的功能将检查该节点是否存在于firebase中,如果它存在,它将更新。如果没有,它将被创建。 问题是第一次按下按钮保存将始终有效。但我的网站第二次冻结。我正在使用 angular2 和 angularfire2。 抱歉,它基本上进入了一个无限循环,导致我的网站在第二次单击保存按钮后冻结。
constructor(private db:UserInfoService) {
this.items =
this.db.getData().subscribe(snapshot=>this.getAllData(snapshot.val()));
}
getData(){
return this.db.object('users/71933808',{ preserveSnapshot: true });
}
savedata(path,userInfo){
this.db.object(`users/${path}/`,{ preserveSnapshot: true })
.subscribe(snapshot => {
if(snapshot.exists()) {
this.addingUserInfo(userInfo);
}else{
this.updatingUserInfo(userInfo);
}
});
}
在这种方法中,我正在创建我的对象以将其传递给 savedata 函数:
loging(user,placeholder){
placeholder = placeholder.replace(/\s/g, '');
this.items[''+placeholder+'']=user;
}
getAllData(item:any){
this.items = item;
}
saveData(){
this.db.savedata('71933808',this.items);
}
【问题讨论】:
-
你能用你的代码更新你的问题吗?谢谢
-
问题出在 .exists() 函数上,它造成了无限循环,我不知道如何检查节点是否存在。
-
Id 它不存在,if(snapshot) { 就足够了。你不需要 .exist,它会返回 null
-
而函数addingUserInfo向firebase添加了一些东西没有?
-
是的,它确实增加了一些东西
标签: angular firebase firebase-realtime-database angularfire2