Пожарный магазин |Почему все, где фильтры должны быть на одном поле? - PullRequest
0 голосов
/ 03 марта 2019

Очевидно, что Firestore не поддерживает запросы с фильтрами диапазона в разных полях, как описано здесь :

Мой вопрос: ПОЧЕМУ?

КАК я могу сделать запрос повремя и местоположение, например:

Firestore.instance.collection('events')
      .where("eventTime", isGreaterThanOrEqualTo: DateTime.now().millisecondsSinceEpoch)
      .where("eventLocation", isGreaterThan: lesserGeopoint)
      .where("eventLocation", isLessThan: greaterGeopoint)
      .where("eventStatus", isEqualTo: "created")
      .orderBy('eventLocation', descending: false)
      .orderBy('eventTime')
      .snapshots(),

(пример из приложения Flutter, написанного на Dart)

Я получаю следующую ошибку:

Все, где фильтры, кромеwhereEqualTo () должен быть в том же поле.Но у вас есть фильтры для 'eventTime' и 'eventLocation', null)

Я не понимаю, как это не поддерживается и как решать подобные запросы?

Любая помощьценится: -)

Спасибо, Михаил

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

Cloud Firestore дает надежную гарантию производительности для любых операций чтения, которые он позволяет: время, которое занимает операция чтения, зависит от количества элементов, которые вы читаете, а не от количества элементов в коллекции.Это совершенно уникальная гарантия производительности, поскольку это означает, что ваши запросы будут занимать столько же времени, когда у вас 1 миллион пользователей, чем когда у вас 1 миллиард пользователей.

Firestore предлагает только те операции запросов, для которых он можетсохранить эту гарантию производительности.Это основная причина ограничений, которые вы можете найти в API запросов Firestore.

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

Если выхотел бы больше узнать о возможностях и ограничениях запросов Firestore, я настоятельно рекомендую посмотреть Как работают запросы в Cloud Firestore? и остальной части видео-серии Get-Know Cloud Firestore .

См. Также:

0 голосов
/ 03 марта 2019

Прочитали ли вы страницу по индексам , которая описывает, как можно поддерживать некоторые составные запросы и как создавать и использовать составные индексы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...