首页 > 解决方案 > 仅将用户输入的数据显示给在 Android Studio 中从 Firebase 实时数据库输入数据的用户

问题描述

我目前正在从事一个大学项目,我被困在这个阶段,我在注册时获取用户数据并将其放入 Firebase 实时数据库Firebase 控制台屏幕截图,方法是使用此代码将数据发送到 Firebase,我想在另一个 Activity 上显示 TextView 中提到的用户的详细信息。我希望用户只看到他输入的内容,而不是其他任何内容。我知道只有在正常情况下才能从 firebase 获取数据 如果数据库是这样的显示代码没有 pushID 数据库 ,并且没有唯一的 id,所以很容易但是使用 push() 函数我没有得到它。

标签: javaandroidxmlfirebasefirebase-realtime-database

解决方案


因为你使用的不是User节点的key,来自认证过程的UID,而是通过“push()”方法生成的key,所以需要通过特定的方式查询“Users”节点价值。看到您的示例,要在 TextView 中显示“名称”属性的值,请使用以下代码行:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersRef = rootRef.child("Users");
Query queryByName = usersRef.orderByChild("Name").equalTo("Xyz");
queryByName.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DataSnapshot> task) {
        if (task.isSuccessful()) {
            for (DataSnapshot ds : task.getResult().getChildren()) {
                String name = ds.child("Name").getValue(String.class);
                textView.setText(name);
            }
        } else {
            Log.d(TAG, task.getException().getMessage()); //Don't ignore potential errors!
        }
    }
});

以下代码的结果会将“Xyz”设置为 TextView 的文本。但是,处理用户的更优雅的方式是使用Firebase Authentication。因此,您可以随时使用 UID 定位用户,而无需使用查询。


推荐阅读