Реализация составного индекса с помощью FlutterFire

Пытаюсь создать составной индекс, чтобы выполнить следующий QuerySnapshot:

final Stream<QuerySnapshot> _tasksStream = FirebaseFirestore.instance
        .collection('tasks')
        .orderBy('duedate', descending: true)
        .where('mocUID', isEqualTo: widget.uid)
        .where('type', isEqualTo: 'General')
        .snapshots();

Терминал в студии Android не возвращает ссылку для создания указанного индекса, как было обещано в видео на YouTube, поэтому я создал его вручную:

Реализация составного индекса с помощью FlutterFire

Но мой запрос продолжает возвращать «Что-то пошло не так».

    return StreamBuilder<QuerySnapshot>(
      stream: _tasksStream,
      builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
        if (snapshot.hasError) {
          return const Text('Something went wrong');
        }
Интеграция Angular - Firebase Analytics
Интеграция Angular - Firebase Analytics
Узнайте, как настроить Firebase Analytics и отслеживать поведение пользователей в вашем приложении Angular.
2
0
17
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Индекс выглядит хорошо для запроса на первый взгляд, но трудно быть уверенным.

Гораздо полезнее, если вы зарегистрируете ошибку с помощью:

if (snapshot.hasError) {
  print('Error in Firestore query: ${snapshot.error}');
  return const Text('Something went wrong');
}

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

Теперь выводит эту ссылку для создания индекса в терминале, и все работает. Спасибо!

Jeremy Parker 22.03.2022 21:21

Другие вопросы по теме