【问题标题】:How to delete whole key data in firebase database?如何删除firebase数据库中的全部关键数据?
【发布时间】:2018-08-11 14:35:02
【问题描述】:

我使用 Firebase 制作应用。我的数据存储结构是-

我在另一个活动中调用主题和描述来展示它们。我在该活动中添加了一个按钮,该按钮删除了上图中显示的特定键(-L6g7ttOxr ... 突出显示的部分)数据。我在第二个活动中成功获得了特定列表项的密钥,以提供数据库参考。

public void deleteCurrentMemo(){
    AlertDialog.Builder alert = new AlertDialog.Builder(
            DisplayMemo.this);
    alert.setTitle("Delete Memo");
    alert.setMessage("Are you sure you want delete current Memo?");
    Toast.makeText(this,key,Toast.LENGTH_SHORT).show();
    alert.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            mFirebaseDatabase = FirebaseDatabase.getInstance();
            mMemoDatabaseReference = mFirebaseDatabase.getReference().child("memos").child(key);
            mMemoDatabaseReference.removeValue();
            finish();
        }
    });
    alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    });
    alert.show();
}

以上代码在删除按钮上调用的第二个活动中。现在如何删除完整的关键数据?

【问题讨论】:

  • 你得到了相当多的反对票。这很可能是因为您共享了指向文本屏幕截图的链接。我使图像可见,但请将它们替换为实际代码和 JSON 作为文本。您可以通过单击Firebase Database console 中的“导出 JSON”链接来获取 JSON。拥有实际文本使其可搜索,使我们能够轻松地使用它来测试您的实际数据和代码,并在我们的答案中使用它,通常只是一件好事。

标签: android firebase-realtime-database


【解决方案1】:

您需要将备忘录的密钥传递给第二个活动。

通常这很容易,因为当您从 Firebase 读取数据时,您已经获得了密钥。只需将主题和订阅一起传递到第二个活动,然后进入deleteCurrentMemo

【讨论】:

  • 这段有问题的代码不会删除关键数据。但是当我删除 child(key) 时,它正在删除整个数据库。我想删除特定的关键数据。我在这里缺少什么?
  • 调用FirebaseDatabase.getInstance().getReference("memos").removeValue() 将删除所有备忘录。调用FirebaseDatabase.getInstance().getReference("memos").child(key).removeValue() 将(最多)仅删除由key 标识的特定备忘录。如果您没有发生这种情况,请在调试器中逐步执行代码并检查每个变量是否具有您期望的值。
【解决方案2】:

通过这种方式,我已成功删除子节点。

N:B 您必须需要要删除的节点的密钥。

    database.getReference().child("Groups").child(groupItem.getGroupkey()).removeValue().addOnSuccessListener(new OnSuccessListener<Void>() {
                    @Override
                    public void onSuccess(Void aVoid) {
                        new CustomMessage(GroupDetailsActivity.this, "Successfully deleted");
                    }
                }).addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Customlog.showlogD("ERROR_MSG",e.getMessage());
                    }
                })

;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-30
    • 1970-01-01
    相关资源
    最近更新 更多