java - 仅将用户输入的数据显示给在 Android Studio 中从 Firebase 实时数据库输入数据的用户
问题描述
我目前正在从事一个大学项目,我被困在这个阶段,我在注册时获取用户数据并将其放入 Firebase 实时数据库Firebase 控制台屏幕截图,方法是使用此代码将数据发送到 Firebase,我想在另一个 Activity 上显示 TextView 中提到的用户的详细信息。我希望用户只看到他输入的内容,而不是其他任何内容。我知道只有在正常情况下才能从 firebase 获取数据 如果数据库是这样的显示代码没有 pushID 数据库 ,并且没有唯一的 id,所以很容易但是使用 push() 函数我没有得到它。
解决方案
因为你使用的不是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 定位用户,而无需使用查询。
推荐阅读
- javascript - 使 Ul 的每个 li 都可点击
- c++ - 计算文件中的单词
- spring-boot - 进程'命令'C:/Program Files/Java/jdk-14.0.1/bin/java.exe''在Intellij IDE中以非零退出值1结束
- c - 有没有办法使用
和 与MinGW? - apache-spark - 在 Spark Dataframe 中将字符串数据类型列转换为 MapType
- node.js - Expressjs 服务器和外部 api 调用
- javascript - Formspree 表单在提交时提醒两次
- python - “列表”对象没有属性“_meta”
- python - PyQt5 来自 apt install python3-pyqt5
- python - 拖放小部件实现错误 - RuntimeWarning:MetaObjectBuilder::addMethod:为“dropped”提供的方法签名无效