2017-11-09 9 views
0

私は現在のユーザーIDの下に格納されている別のユーザーIDを取得しようとしています。私はどのようにランダムなユーザーIDを持つ実際のキーを取得するか分からない。 Firebaseの構造を参照してください。Android Firebase:別のユーザーIDのキーを取得するにはどうすればよいですか?

enter image description here

ので、どのように私は、ランダムなユーザーIDである実際のキーを得るのですか?これまで

を参照してくださいコード:私は任意の助けに感謝

public void getAgencyAdminID(final String nodeName){ 
    database.child("sand") 
      .child(nodeName) 
      .child("agencyAdmin") 
      .addListenerForSingleValueEvent(new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
        System.out.println(dataSnapshot.toString()); 
       } 
       @Override 
       public void onCancelled(DatabaseError databaseError) { } 
      }); 
} 

、ありがとう!

答えて

0

sandノードがertへ直接ごFirebaseデータベースの子とnodeNameポイントがあると仮定してuserIDrC6eW88yy3hhswdBrCT9cmd6rJB2で、そのキーを取得するには、次のコードを使用してくださいループ:Firebaseデータベースに対してクエリを実行すると、複数の結果が出現する可能性があります。 スナップショットには、それらの結果のリストが含まれています。結果が1つだけの場合でも、スナップショットには1つの結果のリストが含まれます。

+0

素晴らしい!働いた!ありがとう! – Miki

+0

あなたは歓迎です。 –

+0

私の答えとの唯一の違いは、元の質問にはなかった 'child(userID)'でした。ミキはこれを私の答えに編集したので、両方の答えは同じです。しかし、 'child(userID)'はどこから来たのですか? – Grimthorr

0

あなたはこの値の場所を知っているようですので、あなたの現在のコードはほぼそこにあります。あなたは返さDataSnapshotの子を反復処理するとDataSnapshot#getKey()を使用してそれぞれのキーをつかむためにだけ必要があります:

public void getAgencyAdminID(final String nodeName){ 
    database.child("sand") 
      .child(nodeName) 
      .child(userID) 
      .child("agencyAdmin") 
      .addListenerForSingleValueEvent(new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
        for (DataSnapshot child : dataSnapshot.getChildren()) { 
         System.out.println(child.getKey()); 
        } 
       } 
       @Override 
       public void onCancelled(DatabaseError databaseError) { } 
      }); 
} 

返さDataSnapshotがですべての子を保持しているので、あなたがここにDataSnapshot#getChildren()for繰り返しループを使用する必要がありますagencyAdminノード。

public void getAgencyAdminID(final String nodeName){ 
    database.child("sand") 
     .child(nodeName) 
     .child(userID) 
     .child("agencyAdmin") 
     .addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      for (DataSnapshot ds : dataSnapshot.getChildren()) { 
       String key = child.getKey(); 
       Log("TAG", key); 
      } 
     } 
     @Override 
     public void onCancelled(DatabaseError databaseError) { } 
    }); 
} 

必要な理由:

+0

ちょっとグリムソー、もう一度ありがとう。私は試しましたが、 "agencyAdmin"をキーとして返します。 – Miki

+0

猶予期間に私の[忍者編集](https://meta.stackoverflow.com/tags/grace-period/info)を見たのかどうか分かりません。 'dataSnapshot.getChildren()'の 'for'ループを使って' dataSnapshot'を呼び出します。 – Grimthorr

関連する問題