Несколько условие whereEqualTo в FirebaseFirestore - PullRequest
0 голосов
/ 23 апреля 2020

Привет, поэтому у меня есть точная схема БД, где есть документы с полем, называемым «статус», это поле имеет разные значения, оно может быть «ожидающим», «отправленным» и т. Д. c ..

У меня есть FirebaseUI Recycler, и я хочу загрузить все документы, которые содержат эти 2 значения. До сих пор я пробовал этот код:

Query query = fStore.collection("friendRequests").document(currentUID)
            .collection("userFriendRequest")
            .whereEqualTo("status", "pending") //1 condition
            .whereEqualTo("status", "sent"); //2 condition

Но у меня проблемы с этим, поскольку он ничего не возвращает, я пробовал с массивами, но я не мог заставить его работать так же хорошо.

Вопрос: Есть идеи, где мне не хватает?

Изображения схемы: enter image description here enter image description here

1 Ответ

2 голосов
/ 23 апреля 2020

Этот запрос является условием AND, и он не будет работать, так как поле в одном документе не может иметь два значения, вы можете сделать следующее:

Query query = fStore.collection("friendRequests").document(currentUID)
            .collection("userFriendRequest")
            whereIn("status", Arrays.asList("pending", "sent");

Используйте оператор in для объединения до 10 предложений равенства (==) в одном поле с логическим ИЛИ. Запрос in возвращает документы, в которых данное поле соответствует любому из значений сравнения

https://firebase.google.com/docs/firestore/query-data/queries#in_and_array -contains-any

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...