Firestore обновление запроса в режиме реального времени очень медленно - PullRequest
0 голосов
/ 22 января 2020

Я выполняю простой запрос к небольшой тестовой базе данных, это мой запрос:

_firestore.collection('chats')
          .where('users', arrayContains: userId)
          .orderBy('sentDate', descending: true)
          .snapshots();

Моя база данных находится в расположении Cloud Firestore southamerica-east1 и выглядит так (размыты некоторые данные в целях безопасности причины):

Database

Я использую плагин Firestore для Flutter на Android, поэтому платформа подчеркивания будет Android.

Если я удаляю .where('users', arrayContains: userId), мой запрос запускается немедленно, и если я изменяю какие-либо поля в базе данных (например, если я использую консоль Firestore и меняю Chat 1 на Chat 2), обновления появляются немедленно. Но с предложением where обновление занимает около 42 секунд.

База данных очень мала и содержит не более 15 элементов.

Это нормальное поведение ? Если нет, как я могу это исправить?

Я не запускаю никакого кода поверх этого запроса, я просто получаю его и отображаю его результаты, используя простой DTO и очень быстрый код пользовательского интерфейса, если Я удаляю предложение where, и все 15 документов отображаются мгновенно. У меня задержка в порядке, у меня сильное соединение с rnet, все невероятно быстро, пока я просто не добавлю эту простую строку where и все перестанет работать.

1 Ответ

1 голос
/ 22 января 2020

Firestore выдает сообщения об ошибках, когда отсутствует индекс, со ссылкой для создания индекса.

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

Я уже подал ошибку для команды Flutter Cloud Firestore, чтобы они могли по крайней мере обновить документы Getting Started и укажите, что все ошибки отсутствующих индексов будут напечатаны в Logcat (по крайней мере, для Android).

PS: Я еще не проверял сам запрос, так как индексы все еще строятся. Я должен указать, что, хотя консоль Firestore сообщает, что она построена и готова, я получаю сообщения об ошибках, в которых говорится, что мне нужно подождать, пока они завершат сборку sh.

...