几个小时以来,我一直在努力获取其余用户属性,以便根据使用用户的UID进行打印。这是我的Firebase数据库中“ userRegistration”表的外观:
UserRegistration Table on firebase
这是我尝试的示例代码,当尝试访问其他表中的值时,它实际上可以完美地工作,但是当尝试访问“ UserRegistration”表中的数据时,则不能工作:
public void getRestOfTheUserAttributes(){
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String the_uid = user.getUid();
DatabaseReference additionalUserInfoRef = rootRef.child("UserRegistration");
Query userQuery = additionalUserInfoRef.orderByChild("user_id").equalTo(the_uid);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
Map<String, Object> map = new HashMap<>();
String userName = ds.child("username").getValue(String.class);
String userMail = ds.child("e-mail").getValue(String.class);
String nameOfUser = ds.child("name").getValue(String.class);
}
}
再次:如果我尝试访问其他表中的数据而不是“ UserRegistration”表上的数据,则以上这段代码非常有效!
此外,我已经创建了一种非常简单的方法来尝试获取其余值,但也不起作用。
public void getUserProfile(){
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String the_id = user.getUid(); //works perfectly
String name = user.getDisplayName(); // returns null
String email = user.getEmail(); //works perfectly!
}
有人可以帮助我吗?
谢谢。
答案 0 :(得分:0)
尝试以下操作:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String the_uid = user.getUid();
DatabaseReference additionalUserInfoRef = rootRef.child("UserRegistraion");
Query userQuery = additionalUserInfoRef.orderByKey().equalTo(the_uid);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String userName = ds.child("username").getValue(String.class);
String userMail = ds.child("e-mail").getValue(String.class);
String nameOfUser = ds.child("name").getValue(String.class);
}
}
首先添加对节点UserRegistraion
的引用,然后根据uid检索数据,您需要使用orderByKey()
并检查其是否等于当前用户的ID。然后,您可以迭代并检索数据
答案 1 :(得分:0)
iD在统计上是唯一的。因此,您无需使用for循环即可从用户数据中进行迭代。只需在子项中提供user_id,您就可以直接检索该用户数据
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String the_uid = user.getUid();
DatabaseReference additionalUserInfoRef = rootRef.child("UserRegistraion").child(the_uid);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String userName = dataSnapshot.child("username").getValue(String.class);
String userMail = dataSnapshot.child("e-mail").getValue(String.class);
String nameOfUser = dataSnapshot.child("name").getValue(String.class);
}
}