Firebase-Abfrage innerhalb der Funktion gibt null zurück

Ich versuche, eine Anwendung zur Anwesenheitserfassung für Schüler mit Javascript und Firebase zu erstellen.

Aber ich habe ein Problem, ich versuche, innerhalb einer Funktion abzufragen und die Funktion diese Daten zurückgeben zu lassen.

Aber wenn ich es versuche, gibt es nichts zurück. 'nicht definiert'

Hier ist mein Code

var root = 'https://path.firebaseio.com';
function initFireSubjects(){
   var db = {};
   db.connection = new Firebase(root + '/subjects');
   db.addSubject = function (year, code, name) {
       this.connection.child(year).push({
           code: code,
           name: name
       });
    };
    db.getAll = function (year) {
        var value;
        this.connection.child(year).on('value', function (snapshot) {
            value = snapshot.val();
        });
        return value;
    };
}

Und hier ist mein Code, um es zu testen

var db = initFireSubjects();
var test = db.getAll('2014');
console.log(test);

Die Struktur der Daten sieht so aus

subject:{
    '2014':{
        randomKey1:{
            code:'eng1',
            name:'English 1'
        },
        randomKey2:{
            code:'math1',
            name:'Mathematics 1'
        },
        randomKey3:{
            code:'sci1',
            name:'Science 1'
        }
    },
    '2015':{
        randomKey4:{
            code:'polsci1',
            name:'Political Science 1'
        },
        randomKey5:{
            code:'comprog',
            name:'Computer Programming'
        }
    }
}

Der Fall ist, ich kann Daten ziehen, wenn ich es so mache

db.getAll = function(year){
    var value;
    this.connection.child(year).on('value',function(snapshot){
        value = snapshot.val();
        console.log(value);
    }
}

Ich weiß nicht, warum es nicht möglich ist, Daten objektorientiert abzurufen.

Eine Eingabe?

Vielen Dank

Antworten auf die Frage(2)

Ihre Antwort auf die Frage