Извлечение данных из структуры «многие ко многим», аналогичной Prase query.include

Мы переносим приложение с Parse на Firebase, и я хотел бы создать пользовательский интерфейс, в котором я могу отображать имя учащегося вместе с классом, к которому он принадлежит, из следующей структуры данных Firebase. Например, классная комната для aluck называется 10th Grade.

{
    "students": {
        "aluck": {
            "firstName": "Andrew",
            "lastName": "Luck",
            "classroom": "-KJlJhyNH6ImKke-qAd-"
        },
        "bmorino": {
            "firstName": "Beth",
            "lastName": "Morino",
            "classroom": "-KJlJhyNH6ImKke-qAd-"
        }
    },
    "classRooms": {
        "-KJlJhyNH6ImKke-qAd-": {
            "location": "Down stairs",
            "name": "10th Grade",
            "students": {
                "aluck": true,
                "bmorino": true,
            }
        }
    }
}

Мое предположение заключалось в том, что когда я делаю что-то подобное с помощью Firebase JavaScript SDK,

var db = firebase.database(); 
db.ref("students/aluck").on("value", function(snap) { 
    // success method will expose the classroom object with it 
}); 

он выставит объект classRooms, но это не так.

В Parse я смог сделать

var query = new Parse.Query(Student);
query.include("ClassRoom");

и он выставит оба объекта Student и ClassRoom.

Любая помощь приветствуется.


person Mike Endale    schedule 27.06.2016    source источник


Ответы (1)


База данных Firebase не поддерживает автоматическое объединение учащихся и классов. Вам придется обрабатывать это в своем собственном коде.

var db = firebase.database(); 
db.ref("students/aluck").on("child_added", function(student) { 
    db.ref("classRooms").child(student.child("classroom").val()).once("value", function(classroom) {
        console.log(classroom.val());
    });
}); 

Если вас беспокоит производительность таких once вызовов, см.: Ускорить получение сообщений для моего приложения социальной сети с помощью запроса вместо многократного наблюдения за одним событием

person Frank van Puffelen    schedule 27.06.2016