Android - 从Firebase数据库中删除节点的问题

时间:2017-07-06 19:21:41

标签: javascript android firebase firebase-realtime-database

从addChildEventListener调用以下函数,以便在需要时从Firebase数据库中删除特定节点。 这里的问题是该函数启动“项目已删除”。 toast,表示任务已成功执行,但该节点在数据库中保持存在。

有人可以告诉我出了什么问题吗?

private void showData(DataSnapshot ds) {
    String keyValue = null;

    if(ds.hasChildren()) {
        keyValue = ds.getKey();

        Toast.makeText(getActivity().getApplicationContext(), "Removing item...", Toast.LENGTH_SHORT).show();
        ds.getRef().child(keyValue).removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Toast.makeText(getActivity().getApplicationContext(), "Item removed.", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(getActivity().getApplicationContext(), "Something bad happened while removing item.", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
}

修改 如果有帮助,我的查询如下:

orderItemsByTime = db.getInstance().getReference().child("items").orderByChild("time");

1 个答案:

答案 0 :(得分:0)

可能的解释是ds.getRef().child(keyValue)未指向您想要的位置。在不存在的位置执行remove()时,这不是错误。 task.isSuccessful()返回true。

添加一些调试日志记录(或烘烤)以显示ds.getRef().child(keyValue)的路径:

Toast.makeText(getActivity().getApplicationContext(), "Removing item at " +
        ds.getRef().child(keyValue), Toast.LENGTH_SHORT).show();

Log.d(TAG, "Removing item at " + ds.getRef().child(keyValue));