如何获取Firebase中父节点的嵌套节点数

时间:2018-02-06 14:20:39

标签: java android firebase firebase-realtime-database

我有一个应用程序,每当用户注册使用 Google电子邮件提供商并且用户被推送时, user.getEmail 就会存储在数据库中根据其唯一的Firebase随机ID生成的firebase数据库。 如何在 Authenticated-Users 节点下统计所有这些随机ID enter image description here

正如您在图片中看到的那样,我基本上有两个用户,我想要计算这些生成的ID,例如 2

更新如果不可行,那么如何知道所有数据何时满载 ???

2 个答案:

答案 0 :(得分:2)

使用以下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference yourRef = rootRef.child("Authenticated-Users");
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        long count = dataSnapshot.getChildrenCount();
        Log.d("TAG", count + "");
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
yourRef.addListenerForSingleValueEvent(eventListener);

或者像这样迭代孩子:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference yourRef = rootRef.child("Authenticated-Users");
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        int count = 0;
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            count = count + 1;
        }
        Log.d("TAG", count + "");
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
yourRef.addListenerForSingleValueEvent(eventListener);

答案 1 :(得分:0)

您可以获得给定路径|位置的子项,如:

dBPathRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            Log.i(dataSnapshot.getChildrenCount()+"Count");

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });