With reference to this Question我正在尝试使用Android从FireBase数据库获取当前UserData。
这是我的代码:
auth = FirebaseAuth.getInstance();
databaseReference = FirebaseDatabase.getInstance().getReference();
FirebaseUser user = auth.getCurrentUser();
databaseReference.child("users").child(user.getUid()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot){
String userID = (String) dataSnapshot.child("name").getValue();
Log.d("TAG", "Name: " + userID);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
每当我运行该应用程序时,即使用户已登录,它也会为我提供NULL。
LogCat:
D/TAG: Name: null
请帮助我检索数据库的名称节点。
答案 0 :(得分:2)
在您的数据库中,您没有使用userid
。这个ID -Li1boDBTPV_59sXL7XI
是由push()
方法生成的随机ID,这就是为什么您会得到null的原因。
您需要更改将数据添加到以下内容的方式:
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("users");
FirebaseAuth auth = FirebaseAuth.getInstance();
FirebaseUser user = auth.getCurrentUser();
ref.child(user.getUid()).child("name").setValue("Darryl Fernand");
ref.child(user.getUid()).child("email").setValue("fernsdarryyl@gmail.com");
ref.child(user.getUid()).child("gender").setValue("male");
然后,您将可以使用userId
检索数据。
答案 1 :(得分:1)
通过这样的实现来获取名称-
FirebaseAuth auth = FirebaseAuth.getInstance();
FirebaseUser user = auth.getCurrentUser();
String uId = firebaseAuth.getCurrentUser().getUid() + "";
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("users");
myRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
boolean hasId = dataSnapshot.hasChild(uId);
if(hasId){
String name = dataSnapshot.child("name").getValue().toString() + "";
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
应该工作正常。希望对您有帮助!