我使用Firebase实时数据库和注册用户详细信息与电子邮件和密码身份验证 .
现在,我可以成功登录并注册注册用户 .
现在,我必须获取当前登录用户的详细信息 . 我的数据库结构如下:
{
"UserInfo : " : {
"User ID : CxQNTJwnoleIk9M1iYMT9TsrJst2" : {
"-Kvb_W0YWX7M8dPF7Kn9" : {
"contact" : "8888888888",
"email" : "visu@gmail.com",
"firstname" : "Vish",
"lastname" : "Mo",
"password" : "vish",
"strUserId" : "CxQNTJwnoleIk9M1iYMT9TsrJst2"
}
},
"User ID : e1VCGeshWfOeptzzj4kP1POtmhk2" : {
"-KvbTM1Jtzn3r9V7II47" : {
"contact" : "9999999999",
"email" : "ja@gmail.com",
"firstname" : "Ja",
"lastname" : "Mo",
"password" : "ja123#",
"strUserId" : "e1VCGeshWfOeptzzj4kP1POtmhk2"
}
}
}
}
例如,如果我使用email:visu@gmail.com登录,那么我想获得该用户的所有详细信息 .
我该怎么做 ??
Ya,我可以获得Email和Displayname,如下所示:
FirebaseUser user = firebaseAuth.getCurrentUser();
txtUsername.setText("Welcome, " + user.getDisplayName() + "\n" + user.getEmail());
但是,我想从上面指定的数据库结构中获取该用户的所有详细信息 . 请指导我 . 谢谢 .
3 回答
你这样做的时候:
它只是您的身份验证字段,而不是您的数据库 . 首先,您应该通过以下方式定义这些字段:
在您的数据库结构中:
最后,用简单的单词重构你的数据库结构 . UserID,Email,Password是冗余的,因为Authentication Field可以使用它 .
阅读更多:https://firebase.google.com/docs/database/android/read-and-write
试试这个 . 希望这会奏效
最后,我做了如下:
创建了一个方法,首先加载了ProgressDialog,然后获取了数据库引用并将其初始化为我的数据库节点,并从 FirebaseAuth 实例获取UUid . 附上 ValueEventListener 和内部方法: onDataChange ,使用 DataSnapshot 的实例来获取我的 User 类的值 . 最后将获取的数据显示到我的textviews .
谢谢大家的努力 . upvoted .
EDIT :我的新结构如下: