【问题标题】:How to delete the individual childs from firebase in android?如何从android中的firebase中删除单个孩子?
【发布时间】:2019-08-08 20:08:09
【问题描述】:

我浏览了各种链接和解决方案delete-child-from firebaseHow to remove child nodes,并尝试在我的项目中使用,但没有任何效果。如下链接Deletion of child nodes

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
rootRef.child("calendario").child("-L7jrJ6DtQWrmZsC4zvT").removeValue();

它适用于未生成密钥的情况,这不是我的情况。数据库结构在这里。

以下代码用于删除我尝试过的单个孩子。 任何帮助表示赞赏。

 delete.setOnClickListener(new View.OnClickListener() {
            @Override
        public void onClick(View view) {


            FirebaseDatabase ref = FirebaseDatabase.getInstance();
            DatabaseReference myRef = ref.getReference("Students");
            String key = myRef.push().getKey();
             myRef.child(key).removeValue(); 
        }
    });

【问题讨论】:

  • 你的代码没有删除按键吗?
  • 我有点困惑。 push() 将创建一个新密钥,removeValue 将删除它。您必须在某处传递要删除的密钥。
  • @PeterHaddad 是的先生
  • @VinayAvasthi 先生,我该如何修改这段代码?
  • @VinayAvasthi 我试过这样删除,但没有删除,帮帮我。codeshare.io/5MPWKQ

标签: android firebase firebase-realtime-database


【解决方案1】:

您需要将要删除的孩子的密钥保存在某个变量中。假设它在变量 keyToBeDeleted 中。

String keyToBeDeleted = "-LaFeagvdt-mLlc2eWeV";
 delete.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {


        FirebaseDatabase ref = FirebaseDatabase.getInstance();
        DatabaseReference myRef = ref.getReference("Students/" + keyToBeDeleted);
        myRef.removeValue();
    }
});

【讨论】:

  • 先生,密钥是以随机方式生成的,因此将每个随机生成的密钥存储起来可能是一项困难的工作,并以可变形式存储它们,用于删除选项。还有其他方式吗??
  • 您需要跟踪要删除的密钥。当您列出要删除的项目时,您将可以访问这些键,然后根据您单击的按钮,您需要使用该键将其删除。
  • 你能建议我在程序上实现这个逻辑吗?
【解决方案2】:

您没有删除任何内容,因为您只是生成了一个新密钥。如果要删除现有密钥,请使用以下代码行:

ref.getReference("Students").child("-LaFeagvdt-mLlc2eWeV").removeValue();

结果将删除第二条记录。

【讨论】:

  • 先生,密钥是以随机方式生成的,因此将每个随机生成的密钥存储起来可能是一项困难的工作,并以可变形式存储它们,用于删除选项。还有其他方式吗??
  • 签出this
  • 这会更新随机生成的 id 但我不知道如何使用它来删除帮助我!.codeshare.io/5DNgNl
  • (我已尝试删除此代码但没有工作)。 DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); String studentId = rootRef.child("Students").push().getKey(); Map map = new HashMap(); map.put("studentId", studentId); rootRef.child("学生").child(studentId).removeValue();
  • 我再次尝试像这样删除,但没有删除,帮助我。codeshare.io/5MPWKQ
【解决方案3】:

当您使用push() 时,您正在生成一个新的随机ID,然后当您在该密钥上使用removeValue() 时会导致删除该密钥。

如果您想删除数据库中的现有密钥,则需要从数据库中检索它才能与removeValue() 一起使用。

【讨论】:

    猜你喜欢
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 2018-03-08
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 2021-03-11
    相关资源
    最近更新 更多