Доступ к неизвестному пути Firebase

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

Доступ к неизвестному пути 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/')
}

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

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
199
1

Ответы 1

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

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]);    
        });
  });

Проблема использования set () заключается в том, что если я добавлю еще одну группу, она перезапишет существующую, и я хочу создать несколько групп для каждой «практики».

Eric 19.05.2018 11:10

Не совсем понимаю №2, но попробую, хахаха

Eric 19.05.2018 11:11

Здравствуйте, Эрик, успели ли вы взглянуть на предложенное решение?

Renaud Tarnec 08.06.2018 15:28

не совсем понял # 2, но я думаю, что нашел способ, просто взял все и использовал для циклов

Eric 09.06.2018 16:42

# 2 на самом деле решение цикла, поэтому я думаю, оно должно быть похоже на то, что вы делаете.

Renaud Tarnec 09.06.2018 16:47

Другие вопросы по теме