2016-05-22 15 views
0

以下は私のfirebaseデータです。firebaseから1つのエントリを取得

users 
    a81b0dec-671e-4840-9977-e932274928fb 
     email: "[email protected]" 
     screenname: "SSS" 
     totalmoney: "0" 
     uid: "a81b0dec-671e-4840-9977-e932274928fb" 
    c934beeb-51d2-4919-bff0-64153abff1dd 
     email: "[email protected]" 
     screenname: "PPP" 
     totalmoney: "0" 
     uid: "c934beeb-51d2-4919-bff0-64153abff1dd" 
    e0187af9-20a9-4088-a86c-7fb8cf3b4d47 
     email: "[email protected]" 
     screenname: "OOO" 
     totalmoney: "0" 
     uid: "e0187af9-20a9-4088-a86c-7fb8cf3b4d47" 

は、どのように私はUID = "a81b0dec-671e-4840から9977-e932274928fb" を持つノードを取得することができます。 ここまで私がこれまでに試したことはありますが、うまくいきません。

String uid = "a81b0dec-671e-4840-9977-e932274928fb"; 
Query query = fb.orderByChild("uid").equalTo(uid); 
      query.addListenerForSingleValueEvent(new ValueEventListener() { 

       @Override 
       public void onDataChange(DataSnapshot data) { 
        // TODO Auto-generated method stub 
        Log.i("SINGLE VALUE EVENT", data.toString()); 
       } 

       @Override 
       public void onCancelled(FirebaseError error) { 
        // TODO Auto-generated method stub 

       } 
      }); 
+0

は「それが動作していない」信じられないほど曖昧である:それはあなたが直接、いくつかのコードを保存し、高速化されることをUIDによってユーザーにアクセスできることを意味します。コードが何を期待していましたか?代わりに何をしましたか? –

答えて

1

あなたの現在のコードは、クエリを実行し。クエリは複数の子ノードと一致することができるため、値のリストを返します。一致する結果が1つだけの場合でも、1つのリストを返します。

あなたが子供を反復処理することにより、あなたのコードでこれを扱うことができます。

public void onDataChange(DataSnapshot data) { 
    for (DataSnapshot userSnap: data.getChildren) { 
    Log.i("SINGLE VALUE EVENT", userSnap.child("email").getValue(String.class)); 
    } 
} 

しかし、あなたは(賢明)もその下のユーザーを保存したので、この場合には、あなたも、クエリを必要としないがuid。

String uid = "a81b0dec-671e-4840-9977-e932274928fb"; 
DatabaseReference user = fb.child(uid); 
user.addListenerForSingleValueEvent(new ValueEventListener() { 
    public void onDataChange(DataSnapshot data) { 
    Log.i("SINGLE VALUE EVENT", data.child("email").getValue(String.class)); 
    } 
    public void onCancelled(FirebaseError error) { 
    Log.e(TAG, error); 
    } 
}); 
関連する問題