我正在实施一个使用Firebase进行身份验证的应用,并且运行正常。我现在要做的是在"用户"中添加更多数据。实时数据库中的节点。因此,我更改了数据库角色,现在它们看起来像这样。
`{
"rules": {
"users": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
}
}
}`
现在我有一些代码可用于保存"用户" JSON节点,这就是代码:
` mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
DatabaseReference dbRef = FirebaseDatabase.getInstance().getReference();
dbRef.child("users").child(task.getResult().getUser().getUid()).push().setValue"jovan").addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.i("info", "createUserInDatabase:success");
} else {
Log.i("info", "createUserInDatabase:failure");
}
}
});
Log.i("Info", "" + task.getResult().getUser().getUid());
Log.i("info", "createUserWithEmail:success");
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent);
Toast.makeText(RegisterActivity.this, "Registered and logged in", Toast.LENGTH_SHORT).show();
} else {
Log.i("info", "createUserWithEmail:failure");
}
}
});`
正如我所说,这段代码有效,但当我查看Firebase时,我发现我的数据需要更加结构化,易于阅读。
以下是我想要做的链接,内容是第二个答案。 Stack Overflow link。
提前致谢。
答案 0 :(得分:1)
而不是推送,使用该用户的uid在users节点中创建用户子节点。然后将用户详细信息设置为该节点。
bRef.child("users").child(uid).setValueAsync(otherUserData)
// otherUserData is a map or an object containing other user data
您的数据结构将如下所示。
用户
- &GT; -L3NpAd ......
----&GT;名称:“jovan”
----&GT;年龄:20