firebaseAuth = FirebaseAuth.getInstance();
mDatabase = FirebaseDatabase.getInstance();
mDb = mDatabase.getReference();
FirebaseUser user = firebaseAuth.getCurrentUser();
userKey = user.getUid();
mDb.child(userKey).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.d(TAG, "Name: " + dataSnapshot.child("user_id").getValue());
userID = String.valueOf(dataSnapshot.child("user_id").getValue());
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
我不知道我的代码有什么问题,我想检索用户ID的值。
答案 0 :(得分:0)
我认为不是
mDb = mDatabase.getReference();
你应该使用
mDb = mDatabase.getReference("Tunanetra");
因为您正在寻找的用户是嵌套在。
答案 1 :(得分:0)
要解决此问题,请使用以下代码:
firebaseAuth = FirebaseAuth.getInstance();
mDatabase = FirebaseDatabase.getInstance();
mDb = mDatabase.getReference();
FirebaseUser user = firebaseAuth.getCurrentUser();
userKey = user.getUid();
mDb.child("Tunanetra").child(userKey).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String userID = dataSnapshot.child("user_id").getValue(String.class);
Log.d(TAG, "Name: " + userID);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
使用此代码,您将能够在logcat中打印出已经过身份验证并存在于id
节点下的用户的Tunanetra
。如果用户位于Orangtua
节点下,则只需使用Tunanetra
更改Orangtua
。
答案 2 :(得分:0)
很简单。 如果要检索用户数据。然后,您必须首先选择要在其中查找用户的子节点。
你需要节点Tunanetra和Orangtua
否则你可以通过方法尝试这个订单。
FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();
FirebaseDatabase mDatabase = FirebaseDatabase.getInstance();
DatabaseReference mDb = mDatabase.getReference();
FirebaseUser user = firebaseAuth.getCurrentUser();
String userKey = user.getUid();
//First Approach
mDb.child("Tunanetra").child(userKey).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String userID = String.valueOf(dataSnapshot.child("user_id").getValue());
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
//Second Approach
mDb.child("Tunanetra").orderByChild("email").equalTo(user.getEmail()).limitToFirst(1).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.getChildrenCount()>0){
for(DataSnapshot data : dataSnapshot.getChildren()){
String userID = String.valueOf(data.child("user_id").getValue());
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});