2016-10-19 1 views
0
/users: 
- user1 
     - name: user1name 
     - /contacts 
       - user2 
       - user3 
       ..... 
- user2 
     - name: user2name 
     .... 

Dies ist meine aktuelle Firebase-Datenbank. Wenn Benutzer1 angemeldet ist, überprüfe ich, welche Kontakte er hat und erhalte seine UIDs. Jetzt, da ich ihre UIDs habe, versuche ich die Namen seiner Kontakte zu lesen. Wie bekomme ich die Namen für jeden seiner Kontakte? Muss ich das gesamte Verzeichnis/users lesen oder kann ich eine Abfrage verwenden, die nur die gewünschten Daten abruft? (In diesem Fall: der Name user2 und user3)Lesen Sie Daten aus verschiedenen Verzeichnissen mit Firebase für Android

+0

Sie würden einen verschachtelten Lesevorgang durchführen. Rufen Sie also '/ users/$ uid/contacts' auf, durchlaufen Sie die Schlüssel dort und laden Sie für jeden Schlüssel'/users/$ key'. –

+0

Danke. Genau das, was ich wissen wollte. Wenn Sie diesen Kommentar als Antwort veröffentlichen, werde ich ihn als Lösung markieren. – firefly1337

Antwort

0

Sie ein tun würde geschachtelt lesen. Rufen Sie also /users/$uid/contacts ab, führen Sie dann die Schlüssel dort ein und für jeden Schlüssel laden Sie /users/$key.

0

der Annahme, dass Sie bereits der Benutzer ausgewählt haben, können Sie es in zwei Richtungen gehen:

1) Verwenden Sie .child(String user); in Ihrer Datenbank Referenz.

2) Möglicherweise haben Sie eine URL für Ihre Datenbank deklariert. Fügen Sie Ihrer URL + "/" + String user; hinzu.

Sie können diese Methoden verwenden, um die Kontakte dieses Benutzers zu analysieren.

Schließlich, um Kontakte abzurufen, müssen Sie durchschleifen. Hier

ist ein Beispielcode:

mRef.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot snapshot) { 
      for (DataSnapshot msgSnapshot : snapshot.getChildren()) { 
        mDataset.add(msgSnapshot.getKey()); 
        mAdapter.notifyDataSetChanged(); 

      } 
     } 

Dieser Code-Schnipsel holt Daten und fügt sie zu Ihrem Adapter (die verwendet werden können, um füllen Listenansicht Rasteransicht usw.)

+0

danke für deine Antwort. Ich weiß, wie man die verschiedenen Eigenschaften wie den Namen eines Benutzers erhält. Ich habe versucht zu fragen, wie ich den Namen für jeden Benutzer, der ein Kontakt von Benutzer1 ist, abrufen kann. Ich hoffe du verstehst was ich versuche zu sagen. Es geht nicht um einen Namen. Es geht um mehrere Namen. Erhalte ich die Daten in einer Schleife oder gibt es einen anderen Weg? – firefly1337

+0

Wenn mehrere Einträge vorhanden sind (was für die Kontaktliste offensichtlich ist), müssen Sie eine Schleife erstellen. –

Verwandte Themen