# #flutter #google-cloud-firestore
Вопрос:
Я хочу выполнить поиск в своем приложении flutter, и запрос, который я использую, выглядит следующим образом:
searchUser = FirebaseFirestore.instance
.collection('User')
.where("name", isGreaterThanOrEqualTo: mySearchController.text)
.where("name", isLessThan: limit);
Теперь это дает мне результат, но он показывает все документы, и теперь я хочу выполнить еще 1 «где», как это:
.where("friends", arrayContains: globals.patientPhoneNum)
Итак, мой последний запрос выглядит так:
searchUser = FirebaseFirestore.instance
.collection('User')
.where("friends", arrayContains: globals.patientPhoneNum)
.where("name", isGreaterThanOrEqualTo: mySearchController.text)
.where("name", isLessThan: limit);
Но теперь это приводит меня к ошибке:
(22.1.2) [Firestore]: Listen for Query(target=Query(User where friends array_contains # com.google.firestore.v1.Value@ff357562
W/Firestore(16941): integer_value: 0
W/Firestore(16941): string_value: " 919869787899" and name >= # com.google.firestore.v1.Value@9deca
W/Firestore(16941): integer_value: 0
W/Firestore(16941): string_value: "Ra" and name < # com.google.firestore.v1.Value@9deff
W/Firestore(16941): integer_value: 0
W/Firestore(16941): string_value: "Rb" order by name, __name__);limitType=LIMIT_TO_FIRST) failed: Status{code=FAILED_PRECONDITION, description=The query requires an index. You can create it here: https://console.firebase.google.com/v1/r/project/acm2021-1d053/firestore/indexes?create_composite=Ckpwcm9qZWN0cy9hY20yMDIxLTFkMDUzL2RhdGFiYXNlcy8oZGVmYXVsdCkvY29sbGVjdGlvbkdyb3Vwcy9Vc2VyL2luZGV4ZXMvXxABGgsKB2ZyaWVuZHMYARoICgRuYW1lEAEaDAoIX19uYW1lX18QAQ, cause=null}
Огненный магазин:
Комментарии:
1. Сообщение об ошибке буквально не могло быть более информативным. Вы должны создать индекс. Вы можете создать его там: консоль. firebase.google.com/v1/r/project/acm2021-1d053/…
2. Большое спасибо, чувак
Ответ №1:
Вы должны следовать инструкциям, данным Firebase
- Откройте ссылку, которая появится в командной строке(это)
- Нажмите на кнопку Создать индекс(синяя кнопка в правом нижнем углу).
- Подождите, пока статус запроса на индексирование не изменится с
Building
наEnabled
(этот шаг может занять 4-5 минут). - Теперь запрос должен работать нормально
Комментарии:
1. Спасибо вам 🙂 Я новичок и понятия не имел об этом, ценю это