Я использую 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
.
Спасибо за вашу помощь!