如何使用通过以下方式生成的uid获取用户节点:
String uid=
FirebaseAuth.getInstance().getCurrentUser().getUid();
答案 0 :(得分:1)
您将需要创建一个POJO对象类,以便从该当前uid用户获取属性
为此,首先使用您的用户变量创建一个类,我将其称为UserPojo.class
public class userPojo {
private String email;
private String id;
private String name;
public userPojo() {
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
然后遍历该节点并以这种方式获取值
首先声明您的数据库引用
private DatabaseReference mDatabase;
然后在onCreate()
mDatabase = FirebaseDatabase.getInstance().getReference(); //root reference to the database
然后只需获取引用内的值
mDatabase.child("collion").child(uid).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot snapShot : dataSnapshot.getChildren()){
UserPojo user = snapShot.getValue(UserPojo.class);
//get your values inside that uid
String name = polla.geName();
String email = polla.getEmail();
String id = polla.getId();
Log.e("Data: " , "" + name + "" + email+""+id);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("The read failed: " + databaseError.getCode());
}
});
仅此而已,任何问题都可以随便问
答案 1 :(得分:1)
我正在根据here的请求写此答案,但是我看到,尽管您从uid
对象获得了FirebaseUser
,但您根本没有使用它。您仍在使用push()
方法提供的随机唯一密钥。因此,如果要使用uid
,则数据库结构应如下所示:
Firebase-root
|
--- users
|
--- uid
|
--- email: "nicefawad1@gmail.com"
|
--- uid: "uid"
|
--- name: "fawad"
看,我已经使用了以下代码行产生的uid
:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
为了读取此数据,您有两个选择。第一个是@GastónSaillén在回答中使用模型类解释的,或者使用String
类以更简单的方式解释。因此,要获取特定用户的名称,请使用以下代码行:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("users").child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String name = dataSnapshot.child("name").getValue(String.class);
Log.d("TAG", name);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
uidRef.addListenerForSingleValueEvent(valueEventListener);
您的logcat中的结果将是:fawad
。