从 Firebase 数据库检索特定数据

Mat*_*ham 7 android firebase firebase-realtime-database

我正在使用 Firebase 数据库和 Java 在 android 上创建一个聊天应用程序。每当用户第一次注册时,它都会将他们的用户名存储到节点下的数据库中user/UserID/profile/username。用户名使用 User 类存储。这是存储用户名值的地方。但是,当我尝试类似的东西时

mDatabase.child("users").child(UserID).child("profile").child("username").toString();
Run Code Online (Sandbox Code Playgroud)

这给了我用户名的路径,而不是用户名本身。有人知道如何获取用户名本身的值吗?

编辑:当我运行时它给了我一个错误

DataSnapshot.child("users").child(mUserID).child("profile").child("username").getValue().toString();
Run Code Online (Sandbox Code Playgroud)

这是我的 Firebase 数据库在 UserID 下显示的内容。

Firebase 数据库配置文件

Bla*_*rai 8

您没有正确获得价值。您需要为您的孩子附加一个监听器并获取更新。你这样做:

// 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());
    }
});
Run Code Online (Sandbox Code Playgroud)

您可以在 Firebase网站上找到更多信息和示例。请记住,您不会请求从 Firebase 获取数据。您将侦听器附加到子级,然后从侦听器获取数据。这个例子假设你有一个Profile模型,有一个方法来获取用户名。这将返回您的Profile对象,并使您能够从该对象中获取所需的任何数据。