У меня есть список ArrayList, содержащий все идентификаторы, которые я хочу получить. Есть ли способ получить несколько документов и их значения полей с помощью списка. Кроме того, если мне нужно вручную создать цикл for для получения каждого документа, как мне это сделать?
Структура данных Firestore:
Users:
user1:
field1 :
field2 :
field3 :
field4 :
user2:
field1 :
field2 :
field3 :
field4 :
user3:
field1 :
field2 :
field3 :
field4 :
Список содержит: user1, user2, user3 и так далее ...
Изменить 1: я попытался получить его с помощью цикла for, но он дает исключение нулевого указателя в FriendsData.add(userDetails);
for (String doc : list_of_Friends) {
FirebaseFirestore.getInstance().collection("Users").document(doc).get()
.addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
FamilyMember userDetails = documentSnapshot.toObject(FamilyMember.class);
FriendsData.add(userDetails);
}
});
Изменить 2:
Другая логика цикла также дает ту же ошибку. Когда я регистрируюсь, я вижу, что оба doc
и ds.getId()
получают значения
FirebaseFirestore.getInstance().collection("Users").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if(task.isSuccessful())
for (DocumentSnapshot ds : task.getResult()){
for (String doc : list_of_Friends) {
if(ds.getId().equals(doc)){
FriendsData.add(ds.toObject(FamilyMember.class));
}
}
}
}
});