我正在使用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下显示的内容。
答案 0 :(得分:3)
您没有正确获得价值。您需要将监听器附加到您的孩子并获取更新。你这样做:
// 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
对象,并使您能够获得该对象所需的任何数据。
答案 1 :(得分:0)
试试这个你忘记了将返回值而不是路径mDatabase.child("users").child(UserID).child("profile").child("username").getValue().toString();