2016-12-14 3 views
3

Après avoir récupéré la clé de groupe dans HashMap, comment effectuer une requête de jointure qui affiche uniquement les détails grp qui ont un membre en tant qu'utilisateur particulier. Et si cette structure est mauvaise aidez-moi s'il vous plaît avec ceci.Comment effectuer une requête de jointure dans Firebase?

Structure:

screenShot

+0

Voir aussi https://groups.google.com/forum/#!searchin/firebase -talk/join | trier: date/firebase-talk/DKnBnI0bqoI/YMrp-L1hBgAJ – Kato

Répondre

1

Utilisez DatabaseReference dans un autre DatabaseReference:

// any way you managed to go the node that has the 'grp_key' 
    DatabaseReference MembersRef = FirebaseDatabase.getInstance() 
      .getReference() 
      .child("Members") 
      .child("1CkPG20Tt2dzrVkYkdfCLo") 
      .orderByKey().equalTo("-KYnhiAucnasdkadNC") 
      .addValueEventListener(
        new ValueEventListener() 
        { 
         @Override 
         public void onDataChange(DataSnapshot dataSnapshot) 
         { 
          for (DataSnapshot child : dataSnapshot.getChildren()) 
          { 

           Map<String, Object> valuesMap = (HashMap<String, Object>) dataSnapshot.getValue(); 

           // Get push id value. 
           String key = valuesMap.get("grp_key"); 


           // HERE WHAT CORRESPONDS TO JOIN 
           DatabaseReference chatGroupRef = FirebaseDatabase.getInstance().getReference() 
             .child("Chat_groups") 
             .orderByKey().equalTo(key) 
             .addValueEventListener(
               new ValueEventListener() 
               { 
                @Override 
                public void onDataChange(DataSnapshot dataSnapshot) 
                { 
                 // repeat!! 
                } 

                @Override 
                public void onCancelled(DatabaseError databaseError) 
                { 

                } 
               } 
             ) 
          } 
         } 

         @Override 
         public void onCancelled(DatabaseError databaseError) 
         { 

         } 
        } 
      ); 
+0

Pouvez-vous s'il vous plaît me dire comment combiner ces données avec firebase adaptateur de recycleur et merci beaucoup #amrelghobary monsieur –

+0

@ArjunThakkar vous pouvez le rejoindre en utilisant ['FirebaseIndexRecyclerAdapter'] (https://github.com/firebase/FirebaseUI-Android/blob/master/database/README.md#using-firebaseui -with-indexed-data) – amrro

+1

@ amrelghobary merci monsieur. 1 question dernière si j'ai un groupe que tout cela fonctionne bien, mais que se passe-t-il si j'ai plusieurs groupes.Ce premier MembersRef vous avez mentionné "orderByKey(). EqualTo (" - KYnhiAucnasdkadNC ")" ici "-KYnhiAucnasdkadNC" touche unique rendom J'ai une liste de touches aléatoires que dois-je faire? –