如何统计Firebase中对应UserID下的UID数量?现有代码仅能统计红色标记项
问题原因
你当前的代码统计的是babylist/{userID}节点下的直接子节点数,也就是你提到的红色标记节点数量。如果要统计所有红色节点下嵌套的黑色UID节点总数,需要遍历每个直接子节点,累加其内部的子节点数量。
修正后代码
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 totalCount = 0; // 遍历所有红色标记的第一层子节点 for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) { // 累加每个红色节点下的黑色UID节点数量 totalCount += childSnapshot.getChildrenCount(); } String userCounter = String.valueOf(totalCount); babycount.setText(userCounter); usercount.setText(userCounter); } @Override public void onCancelled(DatabaseError databaseError) { Log.w(TAG, "数据读取失败:", databaseError.toException()); } });
补充说明
若单用户下的UID总数量超过int类型上限(约20亿),可将
totalCount定义为long类型避免数值溢出。
内容的提问来源于stack exchange,提问作者Teej
相关产品推荐
相关产品推荐

