【问题标题】:Retrieve data from Firebase based on information根据信息从 Firebase 检索数据
【发布时间】:2021-05-11 10:41:40
【问题描述】:
我是 Android 开发和 Firebase 的新手。我有一个数据库,用于存储有关员工的信息(例如姓名、部门等)屏幕它只会检索该员工的数据。到目前为止还没有尝试过任何东西,因为我不知道从哪里开始,我只知道基本的向 Firebase 发送/检索数据。我不要求解决方案,我要求的是一个想法,一些可以帮助我记录自己的东西。
提前致谢。
【问题讨论】:
标签:
android
firebase
firebase-realtime-database
firebase-authentication
【解决方案1】:
我想创建一个“登录系统”,例如在其中引入一个名称
如果您想要为您的用户提供“登录系统”,我推荐您authenticate them with Firebase。您可以选择不同类型的身份验证。您可以选择实施电子邮件和密码身份验证,也可以选择使用现有提供商之一,如 Google、Facebook、Twitter 等。除了您从身份验证过程中获得的数据,更准确地说是从FirebaseUser 对象中获得的数据,您还可以自己在数据库中添加其他信息,例如姓名、性别等。
在 Firebase 实时数据库中存储此数据的推荐架构可能是:
Firebase-root
|
--- users
|
--- $uid
|
--- name: "Emanuel"
|
--- gender: "male"
|
--- email: "emanuel@gmail.com"
|
--- age: 25"
以下是关于如何将数据写入数据库的官方文档:
https://firebase.google.com/docs/database/android/read-and-write#basic_write
简而言之,要仅读取特定用户的数据,您应该创建一个指向 UID 节点的引用并附加一个侦听器,如以下代码行所示:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersRef = rootRef.child("users");
DatabaseReference uidRef = rootRef.child(uid);
uidRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
if (task.isSuccessful()) {
String name = task.getResult().child("name").getValue(String.class);
Log.d("TAG", name);
} else {
Log.d(TAG, task.getException().getMessage()); //Don't ignore potential errors!
}
}
});