2017-05-30 4 views
1

私は数日前に問題があり、解決策が見つかりません。名前で検索して、アンドロイドのfirebaseで

私はfirebaseデータベースで名前を検索しようとしていますが、結果は常にnullです。

データベースは次です。

database

I、使用コードは次あります。

final String nombre = edtNombreJugador.getText().toString().trim().toUpperCase(); 

mDatabase.child("user").child("personalData").orderByChild("name").equalTo(nombre); 

mDatabase.addListenerForSingleValueEvent(new ValueEventListener() { 
@Override 
public void onDataChange(DataSnapshot dataSnapshot) { 

for (DataSnapshot singleSnapshot : dataSnapshot.getChildren()){ 

String title = (String) singleSnapshot.child("name").getValue(String.class); 
System.out.println("TITLE: "+title); 


} 

タイトルは常に私の場合はnullを返します。

誰かが私を助けてくれますか?私は...私は悪いやっているデータベースで

+0

テキストを大文字に変換しているため、大文字と小文字の両方の内容は一致しません。この問題を解決するには、ユーザーが大文字と小文字の一致を実行するか、大文字の大文字のテキストを追加のプロパティに格納する必要があります。私たちは今日、まったく同様の問題を解決しました:https://stackoverflow.com/questions/44264337/i-am-trying-to-perform-a-search-on-names-within-my-firebaserecycleradapter- Firebaseで検索する大文字と小文字を区別します。 –

+0

問題は大文字ではないと思います。私のデータベースでは、属性名の値は大文字でしかありません。検索のための私のコードは、そのデータベースに適していますか? –

+0

ああ、そうだ。そこにタイプミスがあります。 JSONには 'users'(最後に' s')がありますが、あなたは 'user'をロードします。 –

答えて

2

今すぐデータベースパス/user/personalDataを照会しています。その下の各子ノードに対して、nameプロパティとユーザーが入力した値を比較します。だから/user/personalData/***/name

データベース内のパスと一致しません。/user/***/personalData/nameです。

Query query = mDatabase.child("user").orderByChild("personalData/name").equalTo(nombre); 

query.addListenerForSingleValueEvent(new ValueEventListener() { 
@Override 
public void onDataChange(DataSnapshot dataSnapshot) {... 
+0

いつもフランクのように偉大な答え。 –

0

イムリターンのために、このコードは(私のために、より明確な)で、あまりにもしようとしてすべての名前を知らないが、結果はあまりにもnullである:

DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference("https://stackoverflow.com/users/"); 
mDatabase.child("personalData"); 
    final UsersData[] user = {null}; 
    ValueEventListener postListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
    for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) { 
     String title = (String) 
     postSnapshot.child("name").getValue(String.class); 
      System.out.println("TITLE: "+title); 
     } 
    } 
     @Override 
     public void onCancelled(DatabaseError firebaseError) { 
     Log.e("The read failed: " ,firebaseError.getMessage()); 
     } 
    }; 
    mDatabase.addValueEventListener(postListener); 
関連する問題