Cloud Firestore - динамические запросы

У меня есть Collection в Cloud Firestore, в котором есть определенное количество элементов, назовем его Collection «X». Это количество предметов будет постоянно меняться. В любой момент времени я хочу прослушать количество элементов в этом Collection и создать несколько вызовов whereEqualto() для объекта Query, основанного на другой «Коллекции», назовем ее «Y»:

Query queryStore = FirebaseFirestore.getInstance()
            .collection("Y")
            .whereEqualTo(USER_ID_LABEL,  "item 1 from X")
            .whereEqualTo(USER_ID_LABEL,  "item 2 from X")
            .whereEqualTo(USER_ID_LABEL,  "item 3 from X");
            //Could be more than 3, could be less than 3, constantly changing

По сути, количество whereEqualTo() будет динамическим.

Возможен ли этот тип запроса?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
6
0
2 731
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Да. гдеEqualTo () возвращает объект Запрос, который можно использовать для создания окончательного запроса, который вам нужен. Нет никакого обязательства связывать все методы сразу, как вы продемонстрировали в своем вопросе. То, что вы написали, эквивалентно этому:

Query queryStore = FirebaseFirestore.getInstance().collection("Y")
queryStore = queryStore.whereEqualTo(USER_ID_LABEL,  "item 1 from X");
queryStore = queryStore.whereEqualTo(USER_ID_LABEL,  "item 2 from X");
queryStore = queryStore.whereEqualTo(USER_ID_LABEL,  "item 3 from X");

Понятно, значит, когда я передаю queryStore в свой FirebaseRecyclerOptions, он будет учитывать все условия where, а не только последнее? Другими словами, это кумулятивно?

tccpg288 05.05.2018 04:00

Спасибо - есть ли способ очистить / сбросить запрос?

tccpg288 05.05.2018 04:51

Нет, запрос - это неизменяемый объект. Прочтите внимательно javadoc (выделив мой): «Создает и возвращает запрос новый с дополнительный фильтр ..». Если вы хотите начать заново, создайте новый запрос с того места, где вы хотите начать построение.

Doug Stevenson 05.05.2018 05:22

Я действительно обновил свой код. По какой-то причине, которую я не могу понять, RecyclerView не заполняет данные, поскольку "Отслеживание" изменено. Я не уверен, почему ...

tccpg288 05.05.2018 06:04

Вы полностью переписали свой вопрос, что сделало недействительным мой ответ на первый вопрос. Если у вас есть дополнительный вопрос, вам следует задать новый вопрос, а не переписывать свой первый вопрос.

Doug Stevenson 05.05.2018 17:59

Отметил - я вернулся назад

tccpg288 05.05.2018 18:17

Другие вопросы по теме