2017-08-20 19 views
0

これは次の構造体です。 enter image description here 私は、接続しているユーザの電子メール=現在の電子メールがある会社、電話、および都市を選択します。Firebaseがヌル値を返す

これは私のコードです:

DatabaseReference mDatabases = FirebaseDatabase.getInstance().getReference(); 

Query query = mDatabases.child("Users").orderByChild("email").equalTo(FirebaseAuth.getInstance().getCurrentUser().getEmail().toString()); 

query.addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     if (dataSnapshot.exists()) { 


      User user = dataSnapshot.getValue(User.class); 
      String company = user.getCompany(); 
      String city = user.getCity); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 

    } 
}); 

返された結果がnullです。

dataSnapshot.getValue(User.class)dataSnapshot.getValue()に変更すると、ノードのすべての値が返されます。

+0

ログに何も表示されませんか?接続エラーまたは何か?あなたのオブジェクトUserはすべてgetterとsetterを持っていますか?変数の前に.getEmail()を試してから、valueを取得してからuserを比較してみてください。 –

+0

あなたの質問にJSONツリーの画像へのリンクが含まれています。実際のJSONをテキストとして置き換えてください。このテキストは[Firebaseデータベースコンソール](https://console.firebase.google.com/project/_/database/data/)の[Export JSON]リンクをクリックすることで簡単に取得できます。 。 JSONをテキストとして検索可能にすることで、実際のデータを使ってテストしたり、答えに使用したりすることができます。一般的には、これは良いことです。 –

答えて

0

検索するユーザーを指定していません。

User user = dataSnapshot.child(userId).getValue(User.class); 

(あなたが取得するユーザーのIDにuserIdを交換してください:あなたのdataSnapshotは、ユーザー値(偶数リストは1つだけの要素を持っている)のリストを返したように、あなたが取得したいユーザーを指定する必要があります現在のユーザーですね!)

+0

可能であれば、 'dataSnapshot.getValue()'の戻り値を提供してください! –

関連する問題