Доступ к неизвестному пути Firebase - PullRequest
0 голосов
/ 18 мая 2018

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

Firebase database

Итак, с помощью моего кода я создаю несколько "Practicas" с идентификатором (152648 ..в этом случае), а затем внутри этого объекта я создаю список "групп" (групп).Проблема в том, что для этого я использую .push (), поэтому Firebase создает список внутри основного узла firebase, но дело в том, что используемый им ключ является случайным, поэтому я хочу получить доступ к последнемушаг называется "alumnos", но, поскольку я не знаю предыдущий ключ, я не могу получить к нему доступ.Я пытался использовать идентификатор для проталкивания объекта, но он добавляет идентификатор, а затем ключ.

Мой код:

//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/')
}

Есть идеи, чтобы получить доступ к последнему шагу, не зная предыдущего?

1 Ответ

0 голосов
/ 18 мая 2018

У вас может быть два разных возможных подхода:

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.log(snapshot.val());
    snapshot.forEach(function(childSnapshot) {
            console.log(childSnapshot.val());
            console.log(childSnapshot.val().alumnos[0]);    
            console.log(childSnapshot.val().alumnos[1]);    
        });
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...