I want to add in Firebase multiple data when a user registers to my app, including a node "Scores" with some children, but I don't know how to add it.
Firebase Database:
"Users" : {
"L89LA3099j-VAhi5Y5P" : {
"Admin" : false,
"Email" : "[email protected]",
"Nickname" : "Anonymous",
"Picture" : "https://firebasestorage.googleapis.com/v0/b/cul...",
"Scores" : {
"Arts" : 0,
"Classical music" : 0,
"Literature" : 0
}
}
}
And here is the code in 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?
If you want to add Scores under a user then try the following:
First use the userid and not the push()
FirebaseUser mCurrentUser= task.getResult().getUser();
String userid=mCurrentUser.getUid();
then change this:
usersRef.child("Users").push().setValue(user_data);
to this:
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);
userRef points to child Users
this line usersRef.child(userid).setValue(user_data);
will create the following:
Users
userid
Admin : false
Email : [email protected]
Nickname" : Anonymous
Picture" : https://firebasestorage.googleapis.com/v0/b/cul...
Then this line DatabaseReference scores_ref =usersRef.child(userid).child("Scores");
will pass through node Users, then node userid and it will add child Scores and it's children. All will be under the current userid.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With