Firebase中UserID下的UID如何统计?

How can I count the UID under the UserID in Firebase?

只算红标,我要的是黑标

Link for the image

如何检索数据?

String userID = FirebaseAuth.getInstance().getUid();

public static final String TAG = "TAG";


DatabaseReference db = FirebaseDatabase.getInstance().getReference().child("babylist").child(userID);

db.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        int counter = (int) dataSnapshot.getChildrenCount();
        String userCounter = String.valueOf(counter);
        babycount.setText(userCounter);
        usercount.setText(userCounter);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
    }
});

it only counts the red mark, what I needed is the black mark

这是预期的行为,因为您只循环访问数据一次。调用.child(userID)会一直统计用户ID节点下children的个数。要计算所有用户的所有children,您需要添加一个嵌套循环,如以下代码行:

DatabaseReference db = FirebaseDatabase.getInstance().getReference();
DatabaseReference babylistRef = db.child("babylist");
babylistRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DataSnapshot> task) {
        if (task.isSuccessful()) {
            int userCounter = 0;
            for (DataSnapshot userSnapshot : task.getResult().getChildren()) {
                for (DataSnapshot snapshot : userSnapshot.getChildren()) {
                    userCounter++;
                }
            }
            babycount.setText(userCounter);
            usercount.setText(userCounter);
        } else {
            Log.d("TAG", task.getException().getMessage()); //Don't ignore potential errors!
        }
    }
});