Я пытаюсь запросить узлы из базы данных Firebase в реальном времени к моему адаптеру утилизации Firebase, где дочернее значение userId находится в String ArrayList.
Итак, у меня есть узел под названием «Follows», в котором хранятся все пользователи, которые следуют внутри приложения. Это выглядит так .Тогда у меня есть узел под названием «Посты», где хранятся все посты любого пользователя.У каждого отдельного поста есть несколько дочерних элементов, содержащих информацию о посте, и один из них называется child с именем userId. выглядит так .
Я получил каждый идентификатор пользователя следующим образом:
final ArrayList<String> usersFollows = new ArrayList<>();
DatabaseReference usersFollowsRef = FirebaseDatabase.getInstance().getReference().
child("Follows").child(currentUserId);
usersFollowsRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
if(dataSnapshot.exists())
{
for(DataSnapshot snapshot : dataSnapshot.getChildren())
{
String followsKey = snapshot.getKey();
usersFollows.add(followsKey);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Теперь мне нужно было бы сделать запрос, который извлекает каждое сообщение со значением «userId», найденным в этом ArrayList «usersFollows»но я не знаю, как достичь своей цели.Например, я не могу написать Query query = postsReference.orderByChild("userId").equalTo(usersFollows);
, потому что вы не можете передать массив внутри оператора equalTo ().
Я на правильном пути или есть более удобный способ сделать это?