2016-06-24 69 views
4
System.out.println(ref.child("[email protected]").child("_email")); 

*我真的试图让孩子的价值,但所有的时间我得到的值 的URL如何为我这段代码尝试获得这个网址的价值,但它找到我希望获得_email值的URL。检索子值-firebase-

回答

12

您正在寻找从错误的角度观的数据。 在使用ref.child("[email protected]").child("_email")时,您只是简单地指向数据库中的某个特定位置,而不再是其他任何地方。 如果您想要检索特定位置的数据,请考虑以下两种方式。

首先,如果你要检索的数据只有一次,你可以做到以下几点:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference mostafa = ref.child("Users").child("[email protected]").child("_email"); 

mostafa.addListenerForSingleValueEvent(new ValueEventListener() { 
@Override 
public void onDataChange(DataSnapshot dataSnapshot) { 
    String email = dataSnapshot.getValue(String.class); 
    //do what you want with the email 
} 

@Override 
public void onCancelled(DatabaseError databaseError) { 

} 
}); 

或者也许你想获取实时值,并在同一时间使用它的数据库值都是在同一时间,只要价值在变,那么你用这个:

mostafa.addValueEventListener(new ValueEventListener() { 
@Override 
public void onDataChange(DataSnapshot dataSnapshot) { 
    String email = dataSnapshot.getValue(String.class); 

    display.setText(email); 
} 

@Override 
public void onCancelled(DatabaseError databaseError) { 

} 
}); 

注意两种方法的区别。首先是仅一次检索,第二次是每当数值改变时检索数据。

只是要记住,我发布的代码只是模板,可能需​​要与他们一起玩。

+0

upvoted for'addValueEventListener'。 –

1

随着ref.child("[email protected]").child("_email")你是刚刚设置参照对象。看看java firebase documentation to retrieve data

为了让你将需要设置一个监听器,供大家参考

ref.child("[email protected]").child("_email").addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot snapshot) { 
     // data available in snapshot.value() 
    } 
    @Override 
    public void onCancelled(FirebaseError firebaseError) { 
    } 
});