Как получить документ из "Firestore", используя сложный запрос в Android - PullRequest
0 голосов
/ 15 февраля 2019

Я построил запрос firebase, как этот, для всех моих выпадающих счетчиков в приложении.

На самом деле у меня есть более 20 счетчиков в моем приложении для Android, чтобы искать пользователей из коллекции firebase firestore на основе любого выбранного выпадающего списка.В настоящее время я обработал все возможные сценарии с помощью условия if else и создал составной запрос на любом выбранном счетчике.но это не очень хороший подход, который я сейчас использую.Мне нужно добавить запрос рядом с любым запросом без обработки каких-либо проверок счетчика .. Вот мой код.

Query query;
CollectionReference collection = 
firestore.collection(Constants.MEMBERS);
query  = collection;

if (rangeBarRating.getRightIndex() != 0 && spinnerReligion.getSelectedItemPosition() != 0){
        query =  collection.whereEqualTo(Constants.RELIGION,spinnerReligion.getSelectedItem()).whereEqualTo(Constants.REGISTERATION_STATUS,rangeBarRating.getRightIndex());
    } else if (spinnerCountry.getSelectedItemPosition() != 0){
        query =  collection.whereEqualTo(Constants.COUNTRY_LIVING_IN,spinnerCountry.getSelectedItem());
    }else if (rangeBarRating.getRightIndex() != 0){
        query =  collection.whereEqualTo(Constants.REGISTERATION_STATUS,rangeBarRating.getRightIndex());
    }else if ((rangeBarAge.getLeftIndex()+18) > 18){
        query =  collection.whereGreaterThanOrEqualTo(Constants.AGE,(rangeBarAge.getLeftIndex()+18));
    }

Мне нужен динамический подход, как я использую только если оператор не, если еще.если выбран какой-либо счетчик, добавьте это значение в мой запрос и получите желаемый результат.

1 Ответ

0 голосов
/ 15 февраля 2019

У вас небольшая ошибка в назначении условного запроса.Вы хотите, чтобы каждое условие было добавлено к существующему запросу, но фактически постоянно перестраивает новый запрос из коллекции.Чтобы это исправить, строите из query каждый раз, когда добавляете условие:

firestore.collection(Constants.MEMBERS);
query = collection;

if (rangeBarRating.getRightIndex() != 0 && spinnerReligion.getSelectedItemPosition() != 0){
    query =  query.whereEqualTo(Constants.RELIGION,spinnerReligion.getSelectedItem()).whereEqualTo(Constants.REGISTERATION_STATUS,rangeBarRating.getRightIndex());
} else if (spinnerCountry.getSelectedItemPosition() != 0){
    query =  query.whereEqualTo(Constants.COUNTRY_LIVING_IN,spinnerCountry.getSelectedItem());
}else if (rangeBarRating.getRightIndex() != 0){
    query =  query.whereEqualTo(Constants.REGISTERATION_STATUS,rangeBarRating.getRightIndex());
}else if ((rangeBarAge.getLeftIndex()+18) > 18){
    query =  query.whereGreaterThanOrEqualTo(Constants.AGE,(rangeBarAge.getLeftIndex()+18));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...