Запрос Firestore на большой массив пользователей - PullRequest
0 голосов
/ 20 апреля 2020

Я использую Google Firestore для запросов пользователей, которые соответствуют моим критериям. Сначала я использую GeoFire, чтобы извлечь всех пользователей из указанного диапазона и вставить их в массив [usersInRange].

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

let query = DBCall.fireStoreUserRef
         .whereField("age", isGreaterThanOrEqualTo: selectedMinimumAge)
         .whereField("uid", in: usersInRange).limit(to: 10)
                query.getDocuments { (snap, error) in
                    if let error = error {
                        print(error)
                    }
                // Present loaded users to UI
              }

Однако моя проблема в том, что возможно, что этот массив может содержать сотни пользователей в диапазоне. И в соответствии с документацией Firestore он будет читать только до 10. Я пытаюсь запросить 10 за раз, используя limit(to:), но я не думаю, что это работает так же, как чтение массива.

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

UID из каждого документа выглядит в Firestore следующим образом -

uid: "GBtg1tnc4sXo9xCnCBcllZiqFoz2"

Это то, что я пытаться сделать здесь можно? Или мне нужно реструктурировать мои данные? Мне нужно, чтобы все пользователи были прочитаны в какой-то момент, когда я разбиваю страницы на массив usersInRange.

Спасибо за вашу помощь!

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