我已創建名稱爲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() –