【发布时间】:2019-04-18 17:44:49
【问题描述】:
我希望从我的数据库中删除电话号码为 X 的特定用户。并插入我的代码删除所有这些。
这是我的数据库:
代码:
private static void deleteUser(final Context context, final String phoneNumber) {
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("users");
Query usersQuery = databaseReference.orderByChild("phone").equalTo(phoneNumber);
usersQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
dataSnapshot.getRef().removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Log.d(TAG, "Deleted");
}
});
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.d(TAG, "onCancelled", databaseError.toException());
}
});
}
【问题讨论】:
-
您必须循环使用
dataSnapshot中数据的子节点,使用如下增强的 for 循环:for(DataSnapshot ds : dataSnapshot.getChildren()) { ... } -
但是如果我总是只有 1 个具有这个特定值的孩子呢?我还需要添加启动某些功能的“addOnCompleteListener”。通过循环,它将为每个用户触发“addOnCompleteListener”。我不希望它发生。当然,我说过我最多有 1 个用户使用这款特定的手机,但以防万一我不创建循环。
-
请看我的回答@Dim,看看这是否能解释你的问题。
标签: android firebase firebase-realtime-database