Создайте вложенный запрос в FirebaseStore, чтобы второй запрос использовал выходные данные из первого запроса

#android #database #firebase #async-await

# #Android #База данных #firebase #async-await

Вопрос:

Использование FirebaseStore в качестве базы данных в моем проекте Android.

Теперь я хочу сделать запрос к документу моей базы данных и выполнить другой запрос, используя значения, полученные из первого запроса.

Каждый раз, когда я запускаю этот код, я получаю исключение nullpointer при втором запросе, поскольку он начинает выполняться до получения ответа от первого запроса.

Мне нужно сделать так, чтобы второй запрос ожидал ответа от первого запроса с этим кодом. Как вы можете это выполнить?

 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(); ждать ответа от первого запроса, как вы можете это сделать?