Я создал узел с именем Users
. Я хочу создать дочерний узел с именем Uid
пользователя, который зарегистрируется и сохранит всю свою информацию профиля в этом дочернем узле.Невозможно добавить данные в базу данных Firebase
Это должно произойти только в том случае, если пользователь был успешно зарегистрирован в базе данных. Поэтому я использовал следующий код:
mAuth.createUserWithEmailAndPassword(user.getEmail(), password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Log.d("MainActivity", "signIn:onComplete:" + task.isSuccessful());
if (task.isSuccessful()) {
DatabaseReference userDatabaseReference = FirebaseDatabase.getInstance().getReference().child("Users");
userDatabaseReference.child(task.getResult().getUser().getUid())
.setValue(user).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Toast.makeText(ResetPassword.this, "user registred to database", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(ResetPassword.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
});
} else {
Toast.makeText(ResetPassword.this, "Registration Failed",
Toast.LENGTH_SHORT).show();
}
}
});
Но мой код не работает. Пользователь зарегистрирован успешно, но ни один ребенок не создается в базе данных. Который должен быть создан с именем Uid пользователя.
Когда я добавил контрольные точки, как показано здесь:
Я обнаружил, что компилятор идет непосредственно в линию 106 после линии не 82 без выполнения какой-либо линии между ними, но все же это вызывает MainActivity, который называется внутри сверху совершенно.
Я не понимаю, как это происходит. Заранее спасибо.
Это создаст дочерний элемент с идентификатором push внутри узла uid. Я не думаю, что это то, чего хочет OP. –
Тогда просто используйте .set() вместо .push() –