Javascript 访问未知的Firebase路径
首先,如果您检查Firebase实时数据库映像,将更容易: 因此,我用代码创建了一些id为(本例中为152648)的“实践”,然后在该对象内创建了一个“grupos”(组)列表。问题来了,为了做到这一点,我使用了.push(),因此Firebase在Firebase主节点内创建了一个列表,但问题是它使用的“键”是随机的,因此,我想访问最后一个名为“alumnos”的步骤,但由于我不知道前一个键,因此无法访问该步骤。我尝试使用一个ID来推送对象,但它先添加ID,然后添加键 我的代码:Javascript 访问未知的Firebase路径,javascript,firebase,ionic-framework,firebase-realtime-database,Javascript,Firebase,Ionic Framework,Firebase Realtime Database,首先,如果您检查Firebase实时数据库映像,将更容易: 因此,我用代码创建了一些id为(本例中为152648)的“实践”,然后在该对象内创建了一个“grupos”(组)列表。问题来了,为了做到这一点,我使用了.push(),因此Firebase在Firebase主节点内创建了一个列表,但问题是它使用的“键”是随机的,因此,我想访问最后一个名为“alumnos”的步骤,但由于我不知道前一个键,因此无法访问该步骤。我尝试使用一个ID来推送对象,但它先添加ID,然后添加键 我的代码: //don
//don't take care about what is values[], grupoList[] and so on
//I just take values from a checkbox on the HTML and I send them to the 'grupo' value of the object 'practica'
addGroup(){
let y=0;
for(let i=0; i<this.values.length; i++){
if(this.values[i] == true){
this.grupoList[y] = this.profiles[i];
y++;
}
}
this.grupo.alumnos = this.grupoList;
this.practica.grupo = this.grupo;
this.practicaService.anyadirGrupos(this.practica);
this.navCtrl.setRoot(VerGruposPage, {'data': this.practica});
}
//Here is where I work with firebase adding the 'grupo'
public anyadirGrupos(practica){
this.afDB.database.ref('practicas/' + practica.id + '/grupos/').push(practica.grupo);
}
//to access the node 'alumnos' (it doesn't work)
public getAlumnos(practica){
return this.afDB.list('practicas/' + practica.id +'/grupos/' + '../alumnos/')
}
想不想在不知道前一步的情况下进入最后一步吗?您可以有两种不同的方法: 1/在不使用额外键的情况下写入“sub-grupos” 这意味着具有如下数据库结构:
- practicas
-idPracticas
-grupos
-alumnos
-0 ....
-1 ......
-anotherGroupName
-0 ....
-1 ......
为此,应使用set()
而不是push()
2/在不同的子节点上保持结构和循环
db.ref('practicas/' + practica.id + '/grupos/').orderByKey().once('value').then(function(snapshot) {
console.log(snapshot.val());
snapshot.forEach(function(childSnapshot) {
console.log(childSnapshot.val());
console.log(childSnapshot.val().alumnos[0]);
console.log(childSnapshot.val().alumnos[1]);
});
});
使用set()的问题是,如果我添加另一个组,它将覆盖现有的组,我想为每个“练习”创建一些组。我不太了解#2,但会尝试一下哈哈哈你好Eric,你有时间看看建议的解决方案吗?我不太了解#2,但我想我找到了一种方法,把所有的东西都拿出来,使用for循环#2实际上就是循环解决方案,所以我想它应该和你做的类似。