android - 我如何检索当前登录的用户数据,如联系人、电子邮件、姓名等
问题描述
这是我的代码,我没有得到预期的输出。
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String userKey = user.getUid();
Log.d("UID : ",""+userKey);
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("users").child(userKey);
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Log.v("temp","temp"); //for debugging
for(DataSnapshot ds : dataSnapshot.getChildren())
{
Log.v("Contact : ",""+ds.child("contact").getValue());
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
解决方案
您正在向我们展示 Cloud Firestore schmea,但您正在使用从实时数据库获取数据的代码。要解决这个问题,您应该使用以下代码:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference usersRef = rootRef.collection("users");
DocumentReference uidRef = usersRef.document(uid);
uidRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document.exists()) {
String firstname = document.getString("firstname");
String lastname = document.getString("lastname");
String monthlybudget = document.getString("monthlybudget");
String emailid = document.getString("emailID");
String contact = document.getString("contact");
Log.d(TAG, firstname + "/" + lastname + "/" + monthlybudget + "/" + emailid + "/" + contact);
}
}
}
});
您的 logcat 中的结果将是:
Vicky/Gupta/2500/vicky@gmail.com/8879835947
推荐阅读
- docker - Docker 未启动总是无法启动。我尝试重新启动、重新安装、清除数据和恢复出厂设置,但都无法解决问题。附加错误日志
- javascript - 在猫鼬中仅更改整个嵌入式文档数组的一个字段
- joomla - 如何在 Gantry 5 (Joomla) 的 CSS 中引入新的类?
- javascript - Vue路由器:无法为默认或主要组件定义子组件
- c - 我在这里得到错误的输出(分配 cookie)
- python - 我最近正在研究言语情感。我发现这个版本不匹配错误
- kotlin - 如何以相同的方式对两个数组进行排序?
- bash - 如何执行等待前一个脚本首先完成的下一个脚本?
- flutter - appwebview 中的 contentblocker 问题
- laravel - 如何将 Spatie 的 laravel-permission 与 JetStream 正确集成?