首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从Firebase - Java - orderByKey中删除共享同一子对象的多个数据

从Firebase - Java - orderByKey中删除共享同一子对象的多个数据
EN

Stack Overflow用户
提问于 2018-09-17 05:41:42
回答 1查看 165关注 0票数 1

我有以下Firebase数据库:

我需要删除共享相同"date_cours“类型的所有条目/数据库对象。

我尝试了以下方法来删除所有共享相同date_cours "10/09/2018“的条目,例如:

代码语言:javascript
复制
private void Delete_CR_Lessons(Date date) {
    final String date_a_supprimer_string = DateFormat.getDateInstance(DateFormat.SHORT).format(date);

    DatabaseReference drTest = FirebaseDatabase.getInstance().getReference("cours");

    drTest.child("date_cours").orderByKey().equalTo("10/09/2018")
            .addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    Log.i("Tag", "test1");

                    for (DataSnapshot postsnapshot :dataSnapshot.getChildren()) {
                        Log.i("Tag", "test2");
                        String key = postsnapshot.getKey();
                        dataSnapshot.getRef().removeValue();
                    }
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {
                    Log.w("TAG: ", databaseError.getMessage());
                }
            });
}//fin de la methode Delete_CR_Lessons

我在方法的执行过程中没有错误。在日志中,我可以看到我的日志"test1“,但看不到日志"test2”。

有人知道我错过了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-17 06:08:13

您提供了错误的路径,然后您尝试删除错误的datasnapshot值,例如,尝试使用:postsnapshot.getRef().removeValue();而不是dataSnapshot.getRef().removeValue();,因为dataSnapshot没有指向您想要删除的值。这就是为什么要使用for循环从数据库中获取所有值节点的原因。检查下面的代码:

代码语言:javascript
复制
DatabaseReference drTest = FirebaseDatabase.getInstance().getReference("cours");

drTest.orderByChild("date_cours").equalTo("01/10/2018")
        .addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                Log.i("Tag", "test1");

                for (DataSnapshot postsnapshot :dataSnapshot.getChildren())  {
                    Log.i("Tag", "test2");
                    String key = postsnapshot.getKey();
                    postsnapshot.getRef().removeValue();
                }

            }


            @Override
            public void onCancelled(DatabaseError databaseError) {
                Log.w("TAG: ", databaseError.getMessage());
            }

        });
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52358639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档