我正在使用Firebase数据库和Java在Android上创建一个聊天应用程序.无论何时用户首次注册,它都会在节点user / UserID / profile / username下将其用户名存储到数据库中.用户名使用User类存储.这是存储用户名值的位置.但是,当我尝试类似的东西
mDatabase.child("users").child(UserID).child("profile").child("username").toString();
这给了我用户名的路径,但没有用户名本身.有谁知道如何获取用户名本身的价值?
DataSnapshot.child("users").child(mUserID).child("profile").child("username").getValue().toString();
以下是我的Firebase数据库在UserID下显示的内容.
解决方法:
你没有得到正确的价值.您需要将监听器附加到您的孩子并获取更新.你这样做:
// Get a reference to your user
final FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference ref = database.getReference("server/path/to/profile");
// Attach a listener to read the data at your profile reference
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Profile profile = dataSnapshot.getValue(Profile.class);
System.out.println(profile.getUsername());
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("The read Failed: " + databaseError.getCode());
}
});
您可以在Firebase website上找到更多信息和示例.请注意,您没有请求从Firebase获取数据.您将侦听器附加到子项,然后从侦听器获取数据.此示例假定您具有Profile模型,并具有获取用户名的方法.这将返回您的Profile对象,并使您能够从该对象获取所需的任何数据.