如何从Android中的Firebase删除单个子级?

时间:2019-03-18 12:42:30

标签: android firebase firebase-realtime-database

我浏览了各种链接和解决方案delete-child-from firebaseHow to remove child nodes并尝试在我的项目中使用,但是没有用。就像链接Deletion of child nodes一样,

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

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

enter image description here

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

 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(); 
        }
    });

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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

结果将是删除第二条记录。

答案 2 :(得分:0)

您需要将要删除的子项的键保留在某个变量中。假设它在变量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();
    }
});