Существует один документ, который представляет собой профиль студента с данными студента, такими как курс, имя пользователя, статус и т. Д. c. Я хочу добавить еще один узел с именем uid в существующий документ путем поиска emailid
Например, в документе, содержащем emailid: "abc@gmail.com", я хочу добавить uid: "111032" в этот документ, содержащий emailid .
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
final DatabaseReference studentRef = rootRef.child("STUDENT");
lg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
username = un.getText().toString().trim();
String password= pw.getText().toString().trim();
lg.setText("Logging in...");
firebaseAuth.signInWithEmailAndPassword(username, password)
.addOnCompleteListener(Welcome.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
firebaseAuth = FirebaseAuth.getInstance();
final String current_user_id = firebaseAuth.getCurrentUser().getUid();
//Save UID to database
Query emailAddressQuery = studentRef.orderByChild("emailid").equalTo(username).limitToFirst(1);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
Map<String, Object> uidUpdate = new HashMap<String, Object>();
uidUpdate.put("uid", current_user_id);
ds.getRef().updateChildren(uidUpdate);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage()); //Don't ignore errors!
}
};
emailAddressQuery.addListenerForSingleValueEvent(valueEventListener);
Intent i=new Intent(Welcome.this,Home.class);
// i.putExtra("useremail", username);
startActivity(i);
lg.setText("Log In");
} else {
Toast.makeText(getApplicationContext(), "Log In Failed", Toast.LENGTH_SHORT).show();
lg.setText("Log in");
}
// ...
}
});
}
});
Вышеуказанный код на самом деле находится в кнопке входа в систему, в которой пользователь получает uid и сохраняет его в этой информации профиля c. это изображение с более подробной информацией. информация .
Как показано на этом изображении , я хочу выполнить поиск по emailid (показан желтым цветом) и добавить узел с именем uid в этот указанный c документ.
СТАРЫЙ КОД:
username = un.getText().toString().trim();
firebaseAuth = FirebaseAuth.getInstance();
String current_user_id = firebaseAuth.getCurrentUser().getUid();
ref= FirebaseDatabase.getInstance().getReference().child("STUDENT").child(username);
Map<String, Object> updates = new HashMap<String, Object>();
updates.put("uid", current_user_id);
ref.updateChildren(updates);
Этот код работает, но мы должны передать имя документа, пока я хочу передать данные по дочернему узлу в документе.