К сожалению, orderByChild()
не работает на нескольких одних и тех же полях одновременно, поэтому вам, возможно, придется выполнить работу в два этапа.
Сначала вы можете запустить запрос orderByChild()
для поиска currentUserId
, а затем добавить все те, которые соответствуют ArrayList, а затем запустить orderByChild()
в найденных uids
для messages
.
Это выглядит примерно так, в коде:
reference.orderByChild("uid").equalTo(currentUserId).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(dataSnapshot.exists())
array.add(dataSnapshot.getValue(String.class);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
)};
Приведенный выше код добавляет uids
соответствие currentUserId
в ArrayList array
.
databaseReference.child(array.get(0)).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(dataSnapshot.child("messages").exists())
// do your thing
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
)};
Вы также можете просто использовать цикл for для просмотра всех значений в array
.