2017-01-24 2 views
0

Ich habe eine einfache Datenbank eingerichtet, die Fragen und Antworten auf diese Fragen enthält. Ziemlich einfach, nur 5 Saiten und das war's. Hier ist der Code:Firebase - Wie wird die ID eines Datenbankelements abgerufen?

questions 
-KbFaJVwP1HKu-rHfrjT 
    ans1: 
     "test" 
    ans2: 
     "1" 
    ans3: 
     "2" 
    ans4: 
     "3" 
    question: 
     "Testing" 
-KbFlP8A08y2k4Vp1XET 
    ans1: 
     "test" 
    ans2: 
     "test2" 
    ans3: 
     "test3" 
    ans4: 
     "test4" 
    question: 
     "Testing" 

I eingereicht haben zwei Einträge nur um es zu testen, aber was ich mich frage ist, wie kehre ich die IDs dieser Fragen? Ich brauche eine eindeutige Kennung, die in diesen Fällen ist KbFaJVwP1HKu-rHfrjT und KbFlP8A08y2k4Vp1XET, aber mit der getKey-Methode, bekomme ich die "Frage" als Ergebnis, weil es als Primärschlüssel festgelegt ist.

Wie kann ich dieses Problem umgehen? Ist meine Datenbank falsch eingerichtet?

Antwort

2

Wenn Sie question erhalten, wenn getKey() aufrufen, können Sie durch die Kinder durchlaufen mit:

for(DataSnapshot child : dataSnapshot.getChildren()) { 
    String childKey = child.getKey(); 
    ... 
} 

Diese Schleife wird zweimal, wo childKey-KbFaJVwP1HKu-rHfrjT sein und -KbFlP8A08y2k4Vp1XET

+0

Ich habe gerade zwei Fragen: Was ist 'dataSnapshot' und soll Kind der Wert sein, der' Frage' zurückgibt? Ich weiß, ich frage zu viel, aber könnten Sie den ganzen Beispielcode veröffentlichen? Vielen Dank für Ihre Antwort! – user1938007

+1

Der Code ist allgemein, weil ich kein Stück deines Codes habe, um meinen anzupassen. 'dataSnapshot' ist der Snapshot, auf dem Sie' getKey() 'aufgerufen haben und _question_ erhalten haben. 'child' wird der Snapshot eine Ebene tiefer sein, wobei' getKey() 'die UIDs zurückgibt – Sunshinator

Verwandte Themen