【问题标题】:Show the data which user has entered to only the user who entered the data from Firebase Realtime Database in Android Studio仅将用户输入的数据显示给在 Android Studio 中从 Firebase 实时数据库输入数据的用户
【发布时间】:2021-07-15 13:21:42
【问题描述】:

我目前正在从事一个大学项目,我被困在这个阶段,我在注册时获取用户数据并使用此代码 Code of Function which sends data to Firebase 将其放入 Firebase 实时数据库 Firebase Console Screenshot,我想显示在另一个 Activity 的 TextView 中提到的用户的详细信息。我希望用户只看到他输入的内容,而不是其他任何内容。我知道只有在正常情况下才能从 firebase 获取数据 Code of displaying如果数据库是这样的No pushID Database 并且由于没有唯一的 id,所以很容易但是使用 push() 函数我没有得到它。

【问题讨论】:

  • 请不要在图片中添加代码。在代码块中输入它们(在一行之前添加 4 个空格将把它变成一个代码块......)。

标签: java android xml firebase firebase-realtime-database


【解决方案1】:

因为你不是使用作为User节点的key,来自认证过程的UID,而是通过“push()”方法生成的key,那么你需要按特定值查询“用户”节点。看到您的示例,要在 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 定位用户,而无需使用查询。

【讨论】:

  • 嘿Shreyash!我可以帮助您了解其他信息吗?如果您认为我的回答对您有所帮助,请考虑通过单击左侧投票箭头下方的复选标记(✔️)来接受它。应将颜色更改为绿色。我真的很感激。谢谢!
猜你喜欢
  • 1970-01-01
  • 2018-06-04
  • 2021-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多