Запрос Firebase не получает документы с определенным полем

# #firebase #flutter #google-cloud-firestore

Вопрос:

Я запускаю запрос, чтобы получить все документы из firebase, содержащие поле location содержит, скажем, «Найроби». Структура моей базы данных такова /posts/[userId]/userPosts/[postId] . введите описание изображения здесь Теперь, когда я указываю userId это в своем коде, я получаю документы.

 QuerySnapshot snapshot = await FirebaseFirestore.instance.collection('posts')
          .doc("1092987983578079255")
          .collection('userPosts')
          .where('location', isGreaterThanOrEqualTo: '${placemark.locality}')
          .get();

      setState(() {
        posts = snapshot.docs.map((doc) => Post.fromDocument(doc)).toList();
        isLoading = false;
      });
 

Однако, когда я пытаюсь получить все документы во всей posts коллекции, я получаю нулевые результаты.

 QuerySnapshot snapshot = await FirebaseFirestore.instance.collection('posts')
          .where('location', isGreaterThanOrEqualTo: '${placemark.locality}')
          .get();

      setState(() {
        posts = snapshot.docs.map((doc) => Post.fromDocument(doc)).toList();
       
      });
 

Я пробовал использовать код

   QuerySnapshot snapshot = await FirebaseFirestore.instance
          .collectionGroup("userPosts")
          .where('location', isGreaterThanOrEqualTo: '${placemark.locality}')
          .get();

      setState(() {
        posts = snapshot.docs.map((doc) => Post.fromDocument(doc)).toList();
        isLoading = false;
      });
 

но я получаю ошибку Operation was rejected because the system is not in a state required for the operation's execution. If performing a query, ensure it has been indexed via the Firebase console.
, учитывая, что это запрос только по одному критерию, я не считаю, что составной индекс необходим, но я все равно его создал.введите описание изображения здесь
adb logcat не дает мне ссылку для создания индекса, даже если я оберну код, try чтобы поймать ошибку e .
Чего мне не хватает?

Комментарии:

1. Не могли бы вы поделиться скриншотом вашей структуры Firestore?

2. @Dharmaraj Я обновил его в вопросе.

3. Второй запрос await postsRef.where('location', ...) требует, чтобы у вас было location поле в документах posts сбора. У тебя это есть?

4. Нет, это location поле содержится в документе «правнук» posts

5. @Dharmaraj Это содержится в документе postId