WedX - журнал о программировании и компьютерных науках

Запрос Flutter / Dart Firestore: как получить все документы, в которых сегодня находится между датами начала и окончания?

У меня есть запрос, который должен (должен) получить все документы, у которых DateLive меньше, чем сегодня, и DateEnds, больше, чем сегодня. Итак, документ активен и еще не закончен.

Вот мой запрос Dart ...

final todayAM = RepoUtil.todayTime000001();
final todayPM = RepoUtil.todayTime235959();
final querySnapshot = await _db
    .collection('things')
    .where('deleted', isEqualTo: false)
    .where('datelive', isLessThan: todayAM)
    .where('dateends', isGreaterThan: todayPM)
    .where('localzips', arrayContainsAny: localZips)
    .limit(100)
    .get();
final thingsJson = querySnapshot.docs.map((doc) => doc.data()).toList();
return thingsJson.map((thingJson) => Thing.fromJson(thingJson)).toList();

Когда я запускаю приложение, я получаю эту ошибку, которую понимаю, но не знаю, как ее решить ...

I / flutter (1781): ThingView ERROR ThingListError ([], 'package: cloud_firestore / src / query.dart': Неудачное утверждение: строка 484, позиция 18: 'hasInequality == field': все, где фильтры с неравенством (‹,‹ =, ›Или› =) должны находиться в одном поле. Но у вас есть фильтры неравенства для FieldPath ([datelive]) и FieldPath ([dateends]).). Error

Как мне написать этот запрос Firestore?

Спасибо за любую помощь, которую вы можете оказать :-)


Ответы:


1

Я думаю, это может быть текущее ограничение Firestore. Это не позволит вам сделать isLessThan в поле datelive и isGreaterThan в поле dateends в одном и том же запросе.

Вы можете выполнить сравнение диапазона (‹,‹ =, ›,› =) или не равно (! =) Только для одного поля.

Источник: https://firebase.google.com/docs/firestore/query-data/queries#compound_queries

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

13.05.2021
  • Да, я читал об этом. Не уверен, насколько хорошо было бы загружать огромное количество документов в память телефона для последующей фильтрации. Я исследую Google Cloud Scheduler прямо сейчас. Похоже, я мог бы создать запланированную функцию, которая будет запускаться каждый день, полдня или ж / д, и обновлять одно логическое поле isLive на основе двух дат в документах. 14.05.2021
  • Да, согласен, загрузка данных для последующей фильтрации на стороне клиента была бы расточительной. Желаем удачи с Google Cloud Scheduler, звучит как отличное решение. 14.05.2021
  • Спасибо за ответ, мой друг. Я ценю это :-) 14.05.2021
  • Новые материалы

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


    Для любых предложений по сайту: [email protected]