来自Firebase的倍数removevalue()不起作用

时间:2017-05-25 22:19:35

标签: android firebase firebase-realtime-database

我的代码以这种方式工作:当我在帖子上时,我按下"确定"在AlertDialog.Builder上,然后我去:

private void borrar_post(){

    Intent intent = new Intent(PostDetailActivity.this, MainActivity.class);
    intent.putExtra("EXTRA_BORRAR_POST", mPostKey);
    startActivity(intent);

}

我回到主要活动,看看是否有我需要删除的内容:

String borrar = getIntent().getStringExtra("EXTRA_BORRAR_POST");

    if (borrar != null) {

        DatabaseReference mipost = FirebaseDatabase.getInstance().getReference();

        mipost.child("user-posts").child(getUid()).child(borrar).removeValue();

        mipost.child("posts").child(borrar).removeValue();

        mipost.child("post-comments").child(borrar).removeValue();

    }

我从我的firebase实时数据库中的3个地方删除了我的帖子。树是:

Firebase Tree

我可能没有任何关于"后评论",所以我知道我可能有问题(也许我应该检查一下是否有什么东西那之前)但即使我评论那条线,我仍然遇到同样的问题:

有时候一切都会被删除,有时候什么都没有,大多数时候只有"用户帖子"孩子被删除了。

我知道我的问题与此类似,但我似乎无法找到错误,有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

您是否有安全规则限制写访问权限作为某个位置当前值的函数?这可能解释了为什么有些移除成功而其他移除失败。

要了解为什么有些FIND - ".*?(blue.?green)" REPLACE - "$1", 来电失败,请添加CompletionListener。您可以将调试侦听器定义为活动中的字段,如下所示:

removeValue()

然后将其添加到您对private DatabaseReference.CompletionListener mRemoveListener = new DatabaseReference.CompletionListener() { @Override public void onComplete(DatabaseError error, DatabaseReference ref) { if (error == null) { Log.d(TAG, "Removed: " + ref); // or you can use: System.out.println("Removed: " + ref); } else { Log.e(TAG, "Remove of " + ref + " failed: " + error.getMessage()); } } }; 的每次调用中:

removeValue()