【问题标题】:How to delete from Firebase Realtime Database using key?如何使用密钥从 Firebase 实时数据库中删除?
【发布时间】:2020-08-10 17:59:03
【问题描述】:

我目前正在处理一个项目,我需要能够从我已经创建的数据库中删除。我使用 .push() 将它创建到数据库,因此创建了一个唯一键,因此删除操作需要它。

我尝试在这里使用 Frank Van Puffelen 的答案How to delete from firebase realtime database?,但我遇到了一个错误,如果两个节点具有相同的标题,它们将被删除。enter image description here

图片显示了我的 Firebase 数据库的外观:

对答案的一点帮助或指导会大有帮助。谢谢

【问题讨论】:

    标签: java android firebase firebase-realtime-database


    【解决方案1】:

    如果您想从数据库中删除单个元素,您需要知道该元素的路径,其中还包括该按键。您的参考应如下所示:

    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference keyRef = rootRef.child("-KlSNx87aYigsH3lLp0D");
    keyRef.removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
        @Override
        public void onComplete(@NonNull Task<Void> task) {
            if (task.isSuccessful()) {
                Log.d("TAG", "Element removed successfully!");
            }
        }
    });
    

    否则,您可以使用如下所示的查询:

    Query idQuery = rootRef.orderByChild("id").equalTo(1);
    

    在这种情况下,Frank Van Puffelen 在以下帖子中的回答:

    工作得很好。

    【讨论】:

    • 感谢您的回答 Alex Mamo,第一个场景是我想要的,但我想知道如何获取密钥,因为我不知道它,因为它是在我实时推送信息时随机生成的数据库。我已经尝试使用第二种情况,使用 Frank Van Puffelen 的代码,但它创建了一个错误,如果我的列表中的两个项目具有相同的“id”,那么它们都会被删除。如果我能在向数据库中添加数据或想要删除数据时以某种方式获取实际密钥。
    • 如果您想使用第一个解决方案,请检查 this 并告诉我它是否有效。
    • 非常感谢 Alex Mamo!,我将您给我的链接中的解决方案改编为我的用例。我能够检索唯一键并使用它写入数据库,同时将唯一键的副本保存到数据库的该特定节点。因此,当我想删除时,我只是使用了那个唯一键。
    猜你喜欢
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    相关资源
    最近更新 更多