Javascript AngularFire2:有条件地访问FirebaseDatabase

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

在我的项目中,我遇到了一种情况,我希望访问AngularFire2 db.list中的路径。但是有一个问题,我在表单submit上获得用户ID,比如
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)
的调用。如果看不到这一点,就很难说那次电话出了什么问题。