我正在使用Firebase身份验证和数据库。在我的项目用户中,登录并使用他们的电子邮件和密码进行注册。我使用模型类,其中具有三个可变的电子邮件,密码和名称。我可以在身份验证中存储电子邮件数据库中的部门和用户详细信息。 代码如下:
User user = new User(name,mail,password);
FirebaseDatabase.getInstance().getReference("Users")
.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
.setValue(user).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
startActivity(new Intent(SignUp.this,Home.class));
finish();
}else {
Toast.makeText(SignUp.this, "Getting error", Toast.LENGTH_SHORT).show();
}
}
答案 0 :(得分:1)
要解决此问题,请不要将用户的uid(FirebaseAuth.getInstance().getCurrentUser().getUid()
传递给child()
方法,而应传递userName
:
FirebaseDatabase.getInstance().getReference("Users").child(name).setValue(user).addOnCompleteListener(/* ... */);
// ^ ^
看到我已经通过了名称而不是uid。
答案 1 :(得分:1)
您可以进行如下设置:将FirebaseAuth.getInstance().getCurrentUser().getUid()
替换为name
。它将使用userName创建节点。
user = new User(name,mail,password);
FirebaseDatabase.getInstance().getReference("Users")
.child(name) // replace the getUid() code with name
.setValue(user).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
startActivity(new Intent(SignUp.this,Home.class));
finish();
}else {
Toast.makeText(SignUp.this, "Getting error", Toast.LENGTH_SHORT).show();
}
}
希望它会为您提供帮助:)