我已创建名称为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的名称创建。
当我加入断点如下所示:
我发现,编译器直接转移到线LINE无82后106不执行之间的任何行,但仍然它调用被称为在MainActivity里面完成。
我不明白这是怎么回事。提前致谢。
这将在uid节点中生成一个带有推式ID的子代。我不认为这是OP想要的。 –
然后只需使用.set()而不是.push() –