Во-первых, будет проще, если вы проверите образ базы данных Firebase в реальном времени:

Итак, с помощью своего кода я создаю несколько «практик» с идентификатором (152648 ... в данном случае), а затем внутри этого объекта я создаю список «групп» (групп). Проблема возникает здесь, для этого я использую .push (), поэтому Firebase создает список внутри этого основного узла firebase, но дело в том, что `` ключ '', который он использует, является случайным, поэтому я хочу получить доступ к последнему шаг называется «выпускники», но, поскольку я не знаю предыдущего ключа, я не могу получить к нему доступ. Я попытался использовать идентификатор, чтобы подтолкнуть объект, но он добавляет идентификатор, а затем ключ.
Мой код:
//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});
}
PracticaService:
//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/')
}
Есть идеи получить доступ к последнему шагу, не зная предыдущего?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


У вас может быть два разных подхода:
1 / Напишите "подгруппы" без дополнительного ключа
Это означает наличие такой структуры базы данных:
- 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.info(snapshot.val());
snapshot.forEach(function(childSnapshot) {
console.info(childSnapshot.val());
console.info(childSnapshot.val().alumnos[0]);
console.info(childSnapshot.val().alumnos[1]);
});
});
Не совсем понимаю №2, но попробую, хахаха
Здравствуйте, Эрик, успели ли вы взглянуть на предложенное решение?
не совсем понял # 2, но я думаю, что нашел способ, просто взял все и использовал для циклов
# 2 на самом деле решение цикла, поэтому я думаю, оно должно быть похоже на то, что вы делаете.
Проблема использования set () заключается в том, что если я добавлю еще одну группу, она перезапишет существующую, и я хочу создать несколько групп для каждой «практики».