Согласно этому сообщению , вы не можете передать два запроса одному адаптеру. Таким образом, вы можете передать или query1
или query2
.
К сожалению, база данных Firebase Realtime не поддерживает запросы к нескольким свойствам (некоторые люди говорят «несколько выражений where» в терминах SQL), поддерживает только запросы к одному дочернему свойству. Поэтому вам нужно создать дополнительное поле, чтобы сохранить оба поля. Поэтому для достижения этого вам нужно создать новое поле, которое в вашей базе данных должно выглядеть следующим образом:
Firebase-root
|
--- itemId
|
--- title: "valueOfTitle"
|
--- description: "valueOfDescription"
|
--- title_description: "valueOfTitle_valueOfDescription"
Итак, как вы видите, свойство title_description
объединяет значения, по которым вы хотите фильтровать. Но база данных Firebase реального времени не поддерживает собственную индексацию или поиск текстовых полей в объектах. Кроме того, загрузка всего режима для поиска полей на стороне клиента нецелесообразна. Тем не менее, вы можете сделать это для небольших наборов данных, но, как я уже говорил, не подходит для больших наборов данных. Чтобы включить полнотекстовый поиск в вашей базе данных Firebase real-tme, я рекомендую вам использовать стороннюю службу поиска, такую как Algolia .
В отличие от базы данных Firebase Realtime, Cloud Firestore позволяет составные запросы . Вы должны взглянуть на это. Таким образом, запрос, как показано ниже, разрешен в Cloud Firestore без создания объединенного свойства.
itemIdRef.whereEqualTo("title", "valueOfTitle").whereEqualTo("description", "valueOfDescription");
Если вы хотите использовать Algolia в Cloud Firestore, я рекомендую вам посмотреть мой ответ из этой записи . Для получения дополнительной информации, я также рекомендую вам посмотреть видео .