从Firebase数据库中检索特定数据

时间:2017-04-05 20:55:10

标签: android firebase firebase-realtime-database

我正在使用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下显示的内容。

Firebase database profile

2 个答案:

答案 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();

的getValue()