如何从 firebase 数据库中获取登录用户的数据
Posted
技术标签:
【中文标题】如何从 firebase 数据库中获取登录用户的数据【英文标题】:How can I get data of logged in user from firebase database 【发布时间】:2018-11-20 00:04:49 【问题描述】:我需要有关此代码的帮助。
如何从 firebase 数据库中获取登录的用户数据?
这些是我的代码:
public void getUserInfo()
mFirebaseDatabase = FirebaseDatabase.getInstance();
mUserDatabase = mFirebaseDatabase.getReference("users");
FirebaseUser user = mAuth.getCurrentUser();
mUserDatabase.child(userID).addValueEventListener(new ValueEventListener()
@Override
public void onDataChange( com.google.firebase.database.DataSnapshot datasnapshot)
for (DataSnapshot dataSnapshot : datasnapshot.getChildren())
User user1 = dataSnapshot.getValue(User.class);
String firstname = user1.getFirstName();
String secondname = user1.getSecondName();
String email = user1.getEmail();
String enrollment = user1.getEnrollnumber();
String branch = user1.getBranch();
String college = user1.getCollege();
First_name.setText(firstname);
Second_name.setText(secondname);
tx_Email.setText(email);
Enroll_number.setText(enrollment);
@Override
public void onCancelled(DatabaseError firebaseError)
/*
* You may print the error message.
**/
);
任何帮助将不胜感激!
【问题讨论】:
我的最佳猜测答案如下。如果这不是问题的原因:1)将实际问题添加到您的问题中。现在还不清楚您共享的代码有什么问题。 2)将/users/$uid
的JSON添加到您的问题中(作为文本,请不要截图)。您可以通过单击Firebase Database console 中的“导出 JSON”链接来获取此信息。
【参考方案1】:
据我所知,您正在将侦听器附加到单个用户的数据。这意味着您不需要在onDataChange
中循环dataSnapshot.getChildren()
。
所以:
public void onDataChange( com.google.firebase.database.DataSnapshot snapshot)
User user1 = snapshot.getValue(User.class);
String firstname = user1.getFirstName();
String secondname = user1.getSecondName();
String email = user1.getEmail();
String enrollment = user1.getEnrollnumber();
String branch = user1.getBranch();
String college = user1.getCollege();
First_name.setText(firstname);
Second_name.setText(secondname);
tx_Email.setText(email);
Enroll_number.setText(enrollment);
【讨论】:
【参考方案2】:试试这个,在我的情况下,我在 firebase 中的数据库被称为“用户”,其中用户 ID 是每个用户的 ID,使用这个用户 ID 我过滤每个用户示例的数据(姓名、电子邮件...等)
您需要编写一个 for 来迭代所有字段,然后获得您需要的位置,例如 position[0] = name, position[1] = email...等
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference idRef = rootRef.child("Users").child(userID);
final List<String> lstItems= new ArrayList<String>();
for(DataSnapshot ds : dataSnapshot.getChildren())
String values = (String) ds.getValue();
lstItems.add(values);
Log.d(TAG, "NAME: " + lstItems.get(0).toString());
Log.d(TAG, "EMAIL: " + lstItems.get(1).toString());
然后打印出来
email = lstItems.get(0).toString();
name = lstItems.get(1).toString();
希望对你有帮助
【讨论】:
以上是关于如何从 firebase 数据库中获取登录用户的数据的主要内容,如果未能解决你的问题,请参考以下文章
使用 Firebase 3 从 FIRUser 获取创建日期和上次登录日期
如何从 firebase.auth().onAuthStateChanged 中提取数据
Flutter:如何从谷歌登录firebase获取生日? (安卓和iOS)