我正在为我的项目使用Firebase数据库。在过去的几天里,我试图从数据库中检索数据,但没有运气。我尝试了很多来自Stack的教程和问题。数据库看起来像这样:
数据库结构
我的用户类
我想检索信息并将其存储在其中一个字符串中..
每次收到Null或Error值。我不确定我是否使用了正确的引用(“用户”)。
是否有简单的方法来检索用户名并将其存储到字符串中?谢谢
答案 0 :(得分:0)
首先,你必须做这些声明:
private DatabaseReference mUserDatabase;
private FirebaseUser mCurrentUser;
在onCreate中你需要像这样做:
mCurrentUser = FirebaseAuth.getInstance().getCurrentUser();
String current_uid = mCurrentUser.getUid();
mUserDatabase =FirebaseDatabase.getInstance().getReference().child("Users")
.child(current_uid);
mUserDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String name = dataSnapshot.child("uName").getValue().toString();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
现在您的用户名为" name"
答案 1 :(得分:0)
首先更改userInformationActivity类变量名以匹配数据库中的名称
示例:name - > UNAME 姓氏 - > uSurname
然后
private void showData(DataSnapshot dataSnapshot){
for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
userInformationActivity user = dataSnapshot.getValue(userInformationActivity.class);
Log.d("user Name is : " + user.uName);
}
}
答案 2 :(得分:0)
首先,您需要为数据库中的字段设置与模型类中相同的名称。看着你的模特课,你需要做一些事情。因此,我将提供一种正确的方法来为您的班级建模。
public class UserModelClass {
private String name, sureName, date, phoneNumber;
public UserModelClass() {}
public UserModelClass(String name, String sureName, String date, String phoneNumber) {
this.name = name;
this.sureName = sureName;
this.date = date;
this.phoneNumber = phoneNumber;
}
public String getName() {return name;}
public String getSureName() {return sureName;}
public String getDate() {return date;}
public String getPhoneNumber() {return phoneNumber;}
}
为了使其工作,您需要从数据库中删除所有数据并添加新数据。将用户存储在Firebase数据库中时有一种解决方法。而不是使用push()
方法提供的随机密钥,而是使用uid
。为此,我建议您按以下代码行添加数据:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
UserModelClass umc = new UserModelClass("Jonas", "Simonaitis", "today", "123456789");
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("users").child(uid);
uidRef.setValue(umc);
要阅读数据,请使用以下代码:
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
UserModelClass userModelClass = dataSnapshot.getValue(dataSnapshot.class);
String name = userModelClass.getName();
String sureName = userModelClass.getSureName();
String date = userModelClass.getDate();
String phoneNumber = userModelClass.getPhoneNumber();
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
uidRef.addListenerForSingleValueEvent(eventListener);
在我的一个tutorials中,我逐步解释了如何在使用Firebase时使用模型类。