Rob*_*Pal 5 java android firebase firebase-authentication firebase-realtime-database
当用户注册到我的应用程序时,我想在 Firebase 中添加多个数据,包括一个带有一些孩子的节点“Scores”,但我不知道如何添加它。
Firebase 数据库:
"Users" : {
"L89LA3099j-VAhi5Y5P" : {
"Admin" : false,
"Email" : "example@domain.com",
"Nickname" : "Anonymous",
"Picture" : "https://firebasestorage.googleapis.com/v0/b/cul...",
"Scores" : {
"Arts" : 0,
"Classical music" : 0,
"Literature" : 0
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是 Android Studio 中的代码:
FirebaseAuth.getInstance().createUserWithEmailAndPassword(email, password).addOnCompleteListener(UserRegistration.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (!task.isSuccessful()) {
Toast.makeText(UserRegistration.this, "Invalid email or already existed email!", Toast.LENGTH_SHORT).show();
} else {
DatabaseReference usersRef = FirebaseDatabase.getInstance().getReference().child("Users");
HashMap<String, Object> user_data = new HashMap<>();
user_data.put("Admin", false);
user_data.put("Email", email); // I got it correctly from EditText
user_data.put("Picture", "https://firebasestorage.googleapis.com/v0/b/cul...");
user_data.put("Nickname", "Anonymous");
usersRef.child("Users").push().setValue(user_data);
DatabaseReference scores_ref = usersRef.child("Scores"); // I guess it's wrong to do it like this
HashMap<String, Integer> user_scores = new HashMap<>();
user_scores.put("Arts", 0);
user_scores.put("Classical music", 0);
user_scores.put("Literature", 0);
// and now how to add Scores node inside the created user?
Run Code Online (Sandbox Code Playgroud)
如果您想添加Scores到用户下,请尝试以下操作:
首先使用 userid 而不是push()
FirebaseUser mCurrentUser= task.getResult().getUser();
String userid=mCurrentUser.getUid();
Run Code Online (Sandbox Code Playgroud)
然后改变这个:
usersRef.child("Users").push().setValue(user_data);
Run Code Online (Sandbox Code Playgroud)
对此:
usersRef.child(userid).setValue(user_data);
DatabaseReference scores_ref =usersRef.child(userid).child("Scores");
scores_ref.child("Arts").setValue(0);
scores_ref.child("Classical music").setValue(0);
scores_ref.child("Literature").setValue(0);
Run Code Online (Sandbox Code Playgroud)
userRef指向孩子Users
这条线usersRef.child(userid).setValue(user_data);
将创建以下内容:
Users
userid
Admin : false
Email : example@domain.com
Nickname" : Anonymous
Picture" : https://firebasestorage.googleapis.com/v0/b/cul...
Run Code Online (Sandbox Code Playgroud)
然后这一行DatabaseReference scores_ref =usersRef.child(userid).child("Scores");
将通过节点Users,然后节点userid,它将添加子节点Scores及其子节点。一切都将在当前userid.
| 归档时间: |
|
| 查看次数: |
1260 次 |
| 最近记录: |