Я пытаюсь запросить базу данных, чтобы проверить несколько несвязанных ключей, чтобы проверить параметр и составить список, который соответствует моим условиям.
У меня уже есть список, который был создан с помощью предыдущего запроса к другому узлу базы данных. Который вернул список ключей, которые я хочу проверить.
Теперь я хочу повторить этот список и запросить их, чтобы увидеть, соответствуют ли они моим условиям.
Я пытался загрузить весь узел и проверить клиентскую сторону, но это стало бы очень медленным, если узел разрастется и загрузит много ненужных данных.
Я попытался зациклить свой запрос и отправить несколько запросов внутри по ключам в моем списке. Это сработало, но становится все сложнее, когда я пытаюсь вернуться к началу с другими условиями, если мои первоначальные условия не были выполнены.
for (int i = 0; i < nextUp.size(); i++) {
Query query = myRef.child(nextUp.get(i).toString());
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
boolean v = false;
for (DataSnapshot likesSnapshot : dataSnapshot.getChildren()) {
if (uid.equals(likesSnapshot.getKey())) {
v = true;
} else {
}
//b if for second pass with different conditions
if (b) {
if (!v) {
complieList(dataSnapshot.getKey(), b);
}
if (!b) {
complieList(dataSnapshot.getKey(), b);
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
К тому времени, когда мой код возвращается к началу, все запросы еще не завершены. Поэтому мне нужно дождаться, пока все закончат, чтобы продолжить. Но поскольку это требует ожидания результатов для многих запросов, я не могу просто поместить его в onDataChange. Я видел, что обещание JavaScript может одновременно отправлять несколько запросов в конвейер и получать результат для всех из них. Есть ли способ сделать это в Java.
Обновить
Вот ссылка на то, что я хочу сделать, но для javascript Query По нескольким ключам в Firebase