Как я могу подсчитать UID под идентификатором пользователя в Firebase?

# #java #android #firebase #firebase-realtime-database #google-cloud-platform

Вопрос:

Это учитывает только красную метку, то, что мне нужно, — это черная метка.

Ссылка на изображение

Как мне получить эти данные?

 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) {  } });  

Ответ №1:

это учитывает только красную метку, то, что мне нужно, — это черная метка

Это ожидаемое поведение, поскольку вы просматриваете данные только один раз. При вызове .child(userID) всегда будет учитываться количество дочерних элементов в узле идентификатора пользователя. Чтобы подсчитать всех потомков всех пользователей, вам нужно добавить вложенный цикл, как в следующих строках кода:

 DatabaseReference db = FirebaseDatabase.getInstance().getReference(); DatabaseReference babylistRef = db.child("babylist"); babylistRef.get().addOnCompleteListener(new OnCompleteListenerlt;DataSnapshotgt;() {  @Override  public void onComplete(@NonNull Tasklt;DataSnapshotgt; 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!  }  } });