删除firebase数据库中的用户数据无效



我已经创建了一个删除配置文件按钮,但数据库中没有任何内容需要删除!这是我用来做的代码

private void deleteRecord() {
DatabaseReference DbRef = FirebaseDatabase.getInstance().getReference("MyUsers").child("id");
Task<Void> mTask = DbRef.getDatabase().getReference("MyUsers").child("id").removeValue();
mTask.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
showToastMyUsersDelete("Profile permanently deleted!!");
Intent i = new Intent(EditProfileActivity.this, Login_Activity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
finish();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
showToastMyUsersDelete("Error Deleting Profile");
}
});
}

它照我说的做,但不会删除值如果我使用这个代码,例如

Task<Void> mTask = DbRef.getDatabase().getReference().removeValue();

然后整个数据库都会被删除,但实际上是所有的!

这就是我的哈希图的样子——不是完整的在此处输入图像描述

假设MyUsers下的id是当前登录的用户id,则执行以下操作:

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference DbRef = FirebaseDatabase.getInstance().getReference("MyUsers").child(user.getUid());
Task<Void> mTask = DbRef.removeValue();

如果您不知道MyUsers下的id,请执行以下操作:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("MyUsers");
ref.orderByChild("email").equalTo("example@gmail.com").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot data: dataSnapshot.getChildren()){
data.getRef().removeValue();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
}
});

添加对子MyUsers的引用,然后使用查询orderByChild可以获得正确的节点并将其删除

这是因为在第二段代码中,您实际上存储了整个数据库的引用,因为您没有指定任何特定的路径。因此removeValue((将删除整个数据库。

最新更新