Пытаюсь создать составной индекс, чтобы выполнить следующий 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, поэтому я создал его вручную:
Но мой запрос продолжает возвращать «Что-то пошло не так».
return StreamBuilder<QuerySnapshot>(
stream: _tasksStream,
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.hasError) {
return const Text('Something went wrong');
}
Индекс выглядит хорошо для запроса на первый взгляд, но трудно быть уверенным.
Гораздо полезнее, если вы зарегистрируете ошибку с помощью:
if (snapshot.hasError) {
print('Error in Firestore query: ${snapshot.error}');
return const Text('Something went wrong');
}
По крайней мере, это скажет, что вы хотите, чтобы все пошло не так. Если проблема вызвана отсутствием индекса, он зарегистрирует сообщение об ошибке с прямой ссылкой на консоль Firebase для создания необходимого индекса — со всеми предварительно заполненными полями.
Теперь выводит эту ссылку для создания индекса в терминале, и все работает. Спасибо!