2017-06-29 39 views
0
usersRef= myRef.child("users"); 
     usersRef.orderByChild("name").equalTo("yair").addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 

       User user=new User(); 
       user.setName(dataSnapshot.getValue(User.class).getName()); 
       user.setEmail(dataSnapshot.getValue(User.class).getEmail()); 
       user.setId(dataSnapshot.getValue(User.class).getId()); 
       user.setPhone_num(dataSnapshot.getValue(User.class).getPhone_num()); 

我的火力看起来像这样:什么是错与此代码在火力和Android

users 
Y6NKciGllTgkLXlMj9YLlAFuw522 
email: 
"[email protected]" 
id: 
"Y6NKciGllTgkLXlMj9YLlAFuw522" 
name: 
"yair" 
phone_num: 
"050-7777151" 
kfby10Wy16Rx12v7Mx0sksqUTE72 
email: 
"aaa" 
id: 
"kfby10Wy16Rx12v7Mx0sksqUTE72" 
name: 
"aaa" 
phone_num: 
"(050)7777151" 

似乎用户始终保持为空; 任何人都可以帮忙吗?

回答

0

为了解决这个问题,请使用此代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference usersRef = rootRef.child("users"); 
ValueEventListener eventListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for(DataSnapshot ds : dataSnapshot.getChildren()) { 
      String email = ds.child("email").getValue(String.class); 
      User user = new User(); 
      user.setEmail(email); 
      //and so on 
      Log.d("TAG", email); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}; 
usersRef.addListenerForSingleValueEvent(eventListener); 

您的输出将是:

[email protected] 

另一种方法将只是改变DatabaseReference和使用相同的代码是这样的:

DatabaseReference usersRef = rootRef.child("users").child(userId); 

其中userId是生成的唯一ID由push()方法。

希望它有帮助。

+0

感谢ü非常,这是有益的 – zmigale

0

试试这个:

mFirebaseDatabase = FirebaseDatabase.getInstance(); 
mFirebaseDatabase.getReference().child("users").orderByChild("name").equalTo("yair").addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      if (dataSnapshot.getValue() == null){ 
       Log.i("IS NULL", "IS NULL"); 
      } else{ 
       User user = dataSnapshot.getValue(User.class); 
       Log.i("user name", user.getName()); 
      } 
     } 
     @Override 
     public void onCancelled(DatabaseError databaseError) { 
     } 
    }); 

,并确保你的数据库的结构是这样的: enter image description here