我尝试将用户的详细信息存储在Firebase中,格式如下:
User-Register
|
----1
---username:xyz
---phoneNo:9055505555
---password:abc
----2
---username.........诸若此类。
我写了这段代码在应用程序中注册按钮的点击。我的java代码是:
String getUsername = register_username.getText().toString();
String getPhoneNo = register_phoneNo.getText().toString();
String getPassword = register_password.getText().toString();
userRegistrationInfo store_User_Details = new userRegistrationInfo(getUsername, getPhoneNo, getPassword);
FirebaseDatabase databaseInstance = FirebaseDatabase.getInstance();
DatabaseReference reference_for_registration = databaseInstance.getReference("UserRegister");
String childNumber=Integer.toString(count);
reference_for_registration.child(childNumber).setValue(store_User_Details);
count++;我的userRegistrationInfo类是:
public class userRegistrationInfo {
String username;
String phone_number;
String password;
public userRegistrationInfo()
{
}
public userRegistrationInfo(String username,String phone_number,String password)
{
username=this.username;
phone_number=this.phone_number;
password=this.password;
}
public String getUsername() {
return username;
}
public String getPhone_number() {
return phone_number;
}
public String getPassword() {
return password;
}
public void setUsername(String username) {
this.username = username;
}
public void setPhone_number(String phone_number) {
this.phone_number = phone_number;
}
public void setPassword(String password) {
this.password = password;
}
}在运行这段代码时,我在数据库中没有得到任何东西。我正在使用创建的对象的id的计数。但是数据库中没有为它更新任何内容。
如何在数据库中反映这些变化?
发布于 2016-12-21 05:18:40
最好从firebase获取新用户注册的唯一密钥。尝试在应用程序中单击注册按钮时修改您的代码。
String getUsername = register_username.getText().toString();
String getPhoneNo = register_phoneNo.getText().toString();
String getPassword = register_password.getText().toString();
userRegistrationInfo store_User_Details = new userRegistrationInfo(getUsername, getPhoneNo, getPassword);
FirebaseDatabase databaseInstance = FirebaseDatabase.getInstance();
DatabaseReference reference_for_registration = databaseInstance.getReference();
String key = reference_for_registration.child("UserRegister").push().getKey();
Map<String, Object> store_User_DetailsValues = store_User_Details.toMap();
Map<String, Object> childUpdates = new HashMap<>();
childUpdates.put("/UserRegister/" + key, store_User_DetailsValues);
reference_for_registration.updateChildren(childUpdates);添加到userRegistrationInfo类
@Exclude
public Map<String, Object> toMap() {
HashMap<String, Object> result = new HashMap<>();
result.put("username", username);
result.put("phone_number", phone_number);
result.put("password", password);
return result;
}发布于 2016-12-21 13:43:03
首先,为了清楚起见,在您的代码中键入UserRegister,但在数据库格式中声明为User-Register。是打字错误还是你可能需要检查一下。
其次,您需要澄清电话号码属性。Firebase数据库中的数据应该与自定义对象(在本例中为userRegistrationInfo类)中的属性get函数相同。因此,如果您的Firebase数据库属性被列为phoneNo,那么您的自定义对象应该具有getPhoneNo属性来存储数据。反之亦然。
更常见的是使用由Firebase自动生成的唯一id。您可以通过将您的代码替换为以下代码来完成此操作:
reference_for_registration.push().setValue(store_User_Details);
除此之外,我认为上面的代码应该可以很好地工作。尝试在setValue(store_User_Details)的末尾添加.addOnCompleteListener。在此基础上,如果出现问题,您可以澄清更多细节。
https://stackoverflow.com/questions/41248867
复制相似问题