我正在尝试以这种格式存储用户在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;
}
}
在运行此代码时,我没有在数据库中获得任何内容。我正在使用count来创建对象的id。但是数据库中没有更新任何内容。
如何反映数据库中的变化?
答案 0 :(得分:0)
最好从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;
}
答案 1 :(得分:0)
首先,只是为了澄清一下,在您的代码中,您键入UserRegister
,但在数据库格式中,它表示为User-Register
。这是一个错字,或者你可能需要检查一下。
其次,您需要澄清电话号码属性。 Firebase数据库中的数据应与自定义对象中的属性get函数相同(在本例中为userRegistrationInfo类)。因此,如果您的Firebase数据库属性列为phoneNo
,那么您的自定义对象应具有getPhoneNo
属性来存储数据。反之亦然。
使用Firebase自动生成的唯一ID更为常见。您可以使用以下代码替换代码来完成它:
reference_for_registration.push().setValue(store_User_Details);
除此之外,我认为上面的代码应该可以正常工作。尝试在.addOnCompleteListener
的末尾添加setValue(store_User_Details)
。如果出现问题,你可以从那里澄清更多细节。