2016-11-08 2 views
0
in Schleife bekommen child_added

Ich bin mit Ionic 2.Firebase

Dies ist meine Firebase Struktur enter image description here

ich das Kind von Java und Mathematik in diesem Feuerbasis Foto ihres Kindes sind 0,1 erhalten möchten zu jedem.

Ich habe etwas wie die

public getCourse(departmentId:any):any{ 
    var semesterRef = firebase.database().ref('Courses/'+departmentId+'/SemA') 
    semesterRef.on('child_added', function(courseSnapshot) { 
    console.log(courseSnapshot.key); 
}); 

aber es gibt mir nur das Java und Mathematik Namen und nicht ihr Kind. Wie kann ich in Schleife laufen und es erhalten und auch als Array zurückgeben.

, dass mein Code ist enter image description here

+0

Für zukünftige Fragen, bitte posten Sie keine Bilder von JSON und Code. Stattdessen posten Sie den eigentlichen Text. Für JSON können Sie dies leicht erreichen, indem Sie in der Firebase-Datenbankkonsole auf die Schaltfläche "Exportieren" klicken. Wenn der JSON und der Code als Text durchsuchbar sind, können wir ihn einfach verwenden, um mit Ihren tatsächlichen Daten/Codes zu testen und sie in unserer Antwort zu verwenden. Im Allgemeinen ist dies nur eine gute Sache. –

Antwort

3

Sie die forEach Methode des Snapshot verwenden können, um die Kinder der Schlüssel iterieren:

public getCourse(departmentId:any):any{ 
    var semesterRef = firebase.database().ref('Courses/'+departmentId+'/SemA') 
    semesterRef.on('child_added', function(courseSnapshot) { 
    console.log(courseSnapshot.key); 
    courseSnapshot.forEach(function(childSnapshot):boolean{ 
     console.log(childSnapshot.key); 
     // ... etc. 
     return false; // to appease TypeScript 
    }); 
    }); 
} 

Die Firebase API wird nicht Arrays zurückgeben, da es Arrays Objekte mit Schlüssel konvertiert abgeleitet aus den Array-Indizes, aber Sie können die untergeordneten Elemente aufzählen und ein Array neu erstellen, wenn Sie das benötigen.

+0

danke für schnelle Antwort. Es zeigt mir Fehler hier "courseSnapshot.forEach (function (childSnapshot) { " es sagt Argument des Typs '(childSnapshot: DataSnapshot) => void' ist nicht zu Parameter des Typs '(a: DataSnapshot) => boolean' zuweisbar. Typ 'void' ist nicht dem Typ 'boolean' zuweisbar –

+0

Yeah, TypeScript ist unglücklich über den Rückgabewert nicht spezifiziert.Die Funktion, die an 'forEach' übergeben wird, kann 'true' zurückgeben, um die Iteration kurzzuschließen 'um TypeScript zu beschwichtigen – cartant

+0

hey, das ist genau das, was ich wollte, aber ich steckte, weil ich in Anbieter und weiß nicht, wie man es in meine Kurse-Seite.Ich bearbeite meinen Beitrag und fügte den Code hinzu. –