Javascript AngularFire2:有条件地访问FirebaseDatabase
在我的项目中,我遇到了一种情况,我希望访问AngularFire2 db.list中的路径。但是有一个问题,我在表单submit上获得用户ID,比如Javascript AngularFire2:有条件地访问FirebaseDatabase,javascript,angular,firebase,firebase-realtime-database,angularfire2,Javascript,Angular,Firebase,Firebase Realtime Database,Angularfire2,在我的项目中,我遇到了一种情况,我希望访问AngularFire2 db.list中的路径。但是有一个问题,我在表单submit上获得用户ID,比如ieRq3uAs2jdge4YAw8eQP4Ctg2 todoapp-9652a |- todos |-KkasXPx6_g0f6ZnryF2 |-Kkatv9-gcKvzsexT1iH |-Kkau3wIOOHlQqo_Uit3 |-KkayfMh9-3Hqb_dnXDg |- POMJuxiLD6MGPZPI9UDL
ieRq3uAs2jdge4YAw8eQP4Ctg2
todoapp-9652a
|- todos
|-KkasXPx6_g0f6ZnryF2
|-Kkatv9-gcKvzsexT1iH
|-Kkau3wIOOHlQqo_Uit3
|-KkayfMh9-3Hqb_dnXDg
|- POMJuxiLD6MGPZPI9UDLtQGcktv2
|-data1
|-data2
|- ieRq3uAs2jdge4YAw8eQCRGtg2
现在,如果我在submit()
函数中获得db.list(“todos/”+userID)
,它会尝试在加载时获取db.list,并说userID
未定义
因此,我的问题是如何在运行时获取db.list,以便将数据推送到正确的用户配置文件中
代码:
onSubmit(db: AngularFireDatabase ) {
console.log("New Task",this.newTask);
this.todosEdit.subscribe(snapshots=> {
snapshots.forEach(snapshot => {
if(snapshot.val().id){
this.todoListHighestId = snapshot.val().id;
//console.log("this.todoListHighestId",this.todoListHighestId, snapshot.val().id)
}
else {
this.todoListHighestId = 10;
}
});
});
this.finalObject = {
'id' : this.todoListHighestId+1,
'title' : this.newTask.title,
'description' :this.newTask.description,
'status':true,
'completed' :false,
'userID':this.newTask.userID
};
this.todosEdit.subscribe(todosData=>{
console.log("todosData ",todosData);
})
//push(this.finalObject);
console.log("final OBject",this.finalObject);
this.newTask = new todo();
/* To reset the form*/
this.active=false;
setTimeout ( ()=> this.active=true,0);
/* To reset the form*/
}
db.list(“/todos”+userID)
在todos
和UID之间缺少一个/
。请改用db.list(“/todos/”+userID)
。@FrankvanPuffelen感谢您指出这一点。但那是一个打字错误。问题仍然与以前一样。您共享的代码段不包含对db.list(“todos/”+userID)
的调用。如果看不到这一点,就很难说那次电话出了什么问题。