2017-11-08 17 views
-1

ログインしているユーザーIDが現在のユーザーIDと一致しているかどうかを確認して、ユーザーの種類を検証しようとしています。Android Firebase:現在のユーザーIDがユーザーIDのリストと一致するかどうかを確認しますか?

私はexists()メソッドを使用していますが、動作していないようです。私は任意の助けをいただければ幸いです

enter image description here

private String userID = FirebaseAuth.getInstance().getCurrentUser().getUid(); 
private DatabaseReference database = FirebaseDatabase.getInstance().getReference().child("basenode"); 

database.child("sand").child("administratorCountry").addListenerForSingleValueEvent(new ValueEventListener() { 

     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      if (dataSnapshot.child(userID).exists()) { 
       System.out.println("THIS IS THE OUTPUT: "+ "TRUE"); 
      }else{ 
       System.out.println("THIS IS THE OUTPUT: "+ "FALSE"); 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

参照Firebase構造:コードを参照してください!ありがとう!

enter image description here

答えて

0

私はuserIDノードに直接リスナーを取り付けた後、返されたデータが存在することを確認することをお勧めしたい:

各ユーザーIDの内部

更新データを

private String userID = FirebaseAuth.getInstance().getCurrentUser().getUid(); private DatabaseReference database = FirebaseDatabase.getInstance().getReference(); database.child("sand") .child("administratorCountry") .child(userID) // Create a reference to the child node directly .addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { // This callback will fire even if the node doesn't exist, so now check for existence if (dataSnapshot.exists()) { System.out.println("The node exists."); } else { System.out.println("The node does not exist."); } } @Override public void onCancelled(DatabaseError databaseError) { } }); 

child("basenode")を指定する必要はありません。getReference()メソッドがデータベースのルートを直接指しているため、database変数からchild("basenode")を削除できます。

+0

ありがとうGrimthorr。私は出力として偽になっていますが、私は現在 "1V40TSTjw4XR5oLeZGPKcsa6xt12"のように "administratorCountry"の下のリストにあります。助言がありますか? – Miki

+0

OK、確認するだけです - 'administratorCountry'ノードは'/basenode/sand'にありますか? 'System.out.println(dataSnapshot.getRef()。toString());'を 'onDataChange()'メソッドに追加すると、これは正しい場所を指していますか? – Grimthorr

+0

/basenode/sand/administratorCountry/1v40TSTjw4XR5oLeZGPKcsa6xt12 – Miki

関連する問題