【发布时间】:2017-04-16 13:59:40
【问题描述】:
以下是我要上传到 firebase 数据库的数据
{email=t@t.com, name=david ,photoUrl=https://i.stack.imgur.com/tHOLT.png}
在注册屏幕中,我按照以下步骤注册用户:
- 使用电子邮件创建用户
- 登录用户
- 添加用户信息
mAuth.createUserWithEmailAndPassword(binding.inputEmail.getText().toString(),binding.inputPwd.getText().toString())
.addOnSuccessListener(new OnSuccessListener<AuthResult>() {
@Override
public void onSuccess(AuthResult authResult) {
mAuth.signInWithEmailAndPassword(binding.inputEmail.getText().toString(),binding.inputPwd.getText().toString())
.addOnSuccessListener(new OnSuccessListener<AuthResult>() {
@Override
public void onSuccess(AuthResult authResult) {
storeuserdata();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
hideProgressDialog();
Toast.makeText(SignUpActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
hideProgressDialog();
Toast.makeText(SignUpActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
public void storeuserdata(){
mUserRefrence.child(uid).setValue(postValues)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
hideProgressDialog();
Toast.makeText(SignUpActivity.this, getString(R.string.login_success), Toast.LENGTH_SHORT).show();
finish();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
hideProgressDialog();
Toast.makeText(SignUpActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
但是当我查看数据库时,它总是会跳过 photourl 值和 name 带有值的键。
users{
Ul95OXiNhCM5ydpbdvWC5sfnykz2
email: "t@t.com"
photoUrl: ""}
如果您观察到上述结果,则缺少带有值的 name 键,并且也缺少 photoUrl 值。
下面是后值数据
D/SignUpActivity: storeUserData() called postValues : {email=t@t.com, name=david, photoUrl=https://i.stack.imgur.com/tHOLT.png}
下面是模型类
class UserData {
private String name;
private String email;
private String photoUrl;
public UserData() {
}
public void setName(String name) {
this.name = name;
}
public void setEmail(String email) {
this.email = email;
}
public void setPhotoUrl(String photoUrl) {
this.photoUrl = photoUrl;
}
public UserData(String name, String email, Uri photoUrl) {
this.name = name;
this.email = email;
this.photoUrl=photoUrl.toString();
}
@Exclude
public Map<String, Object> toMap() {
HashMap<String, Object> result = new HashMap<>();
result.put("name", name);
result.put("email", email);
result.put("photoUrl",photoUrl);
return result;
}
}
【问题讨论】:
-
请提供 postValues 变量数据
-
{email=t@t.com, name=david ,photoUrl=i.stack.imgur.com/tHOLT.png}
-
我展示了第一行,但你可能会遗漏一些东西是你的模型类是类模型{ String email;字符串照片网址; }
-
您的插入没有问题,但是您的模型类的值可能有问题 print Model class value with the log to test.
-
我已经打印了日志值,一切正常
标签: android firebase firebase-realtime-database firebase-authentication firebase-security