如何在firebase android中获取具有特定值的孩子的数量?

Sid*_*cia 3 android firebase firebase-realtime-database

我的数据库截图

我想获取状态为 NOT OK 的所有化合物的值,您可以在我上传的图片中看到。我试过这个,但我没能得到这些值。请帮助我为我想要实现的目标创建正确的查询。

mUserCompounds.orderByChild("status").equalTo("NOT OK").addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            long compounds_solved = dataSnapshot.getChildrenCount();
            String output = String.valueOf(compounds_solved);
            Log.d("OUTPUT", "Total not ok " + output);
        }

        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) {
            long compounds_solved = dataSnapshot.getChildrenCount();
            String output = String.valueOf(compounds_solved);
            Log.d("OUTPUT", "Total not ok " + output);
        }

        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
Run Code Online (Sandbox Code Playgroud)

我想要得到的化合物是 4。但是我根据我的代码得到的是这个。

输出截图在这里

小智 5

ChildEventListener 将为您提供发生事件的孩子的数据。因此,当您获得快照上的子项数量时,您实际上是在获得属性数量的计数。图像、名称和状态 (3)。

请改用 ValueEventListener。

mUserCompounds.orderByChild("status").equalTo("NOT OK").addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        System.out.println(dataSnapshot.getChildrenCount());                        }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                    }
                });
Run Code Online (Sandbox Code Playgroud)