Использование FirebaseStore в качестве базы данных в моем проекте Android.
Теперь я хочу сделать запрос к документу моей базы данных и выполнить другой запрос, используя значения, полученные из первого запроса.
Каждый раз, когда я запускаю этот код, я получаю исключение нулевого указателя во втором запросе, так как он начинает выполняться до получения ответа от первого запроса.
Мне нужно сделать так, чтобы второй запрос ждал ответа отПервый запрос с этим кодом.Как вы можете это сделать?
FirebaseFirestore db = FirebaseFirestore.getInstance();
//Getting the TenantProfile.
DocumentReference tenantProfile = db.collection(DataBasePath.USERS.getValue())
.document(FirebaseAuth.getInstance().getUid());
tenantProfile.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
userProfile = documentSnapshot.toObject(Profile.class);
}
});
//Making a query to all Tenant and looking for the candidates.
CollectionReference userReference = db
.collection(DataBasePath.USERS.getValue());
LandlordProfile landlord = userProfile.getLandlord();
Query tenantCandidateQuery = userReference
.whereGreaterThan("tenant", "")
.whereEqualTo("country",landlord.getTenantNation())
.whereEqualTo("gender",landlord.getTenantGender())
.whereGreaterThanOrEqualTo("age", landlord.getTenantMinAge())
.whereLessThanOrEqualTo("age",landlord.getTenantMaxAge())
;
tenantCandidates = null;
tenantCandidateQuery.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()){
for (DocumentSnapshot document : Objects.requireNonNull(task.getResult())){
tenantCandidates.add(document.toObject(Profile.class));
}
}
}
});
Мне нужно сделать эту строку LandlordProfile landlord = userProfile.getLandlord();
дождаться ответа из первого запроса, как вы можете это сделать?