Поддерживает ли firestore условие BETWEEN в предложении where? - PullRequest
0 голосов
/ 21 сентября 2019

Используя Firestore, у меня есть коллекция ПРОДУКТОВ, которые будут доступны для бронирования ровно на 3 дня.Поэтому я сохраняю bookingStartsOn и bookingEndsOn в качестве атрибута в коллекции продуктов (формат Unix).

Теперь я хочу отфильтровать продукты, доступные для определенного диапазона дат, например (с 21-09-2019 по 23-09-2019).

Не могли бы вы помочь мне в этом отношении, потому что я не могу найти условие МЕЖДУ в предложении WHERE.

1 Ответ

1 голос
/ 21 сентября 2019

Если вы используете предложение where, вы достигнете ограничения, заключающегося в возможности использовать только один оператор сравнения (>=, >, <, <=) для запроса, так что вы по существу будете толькоможет найти все значения, превышающие дату (хорошо, если вы просто ищете даты за последние 7 дней и ничего не сохранили в будущем), но не позволит вам выполнить операцию, как показано в качестве примера21-09-2019 to 23-09-2019.

Для этого есть другие параметры, которые будут работать лучше, чем предложение where.В Firestore вы можете использовать startAt(), endAt(),, чтобы включить то, что вы предоставляете, или startAfter(), endBefore().

Чтобы операторы типа startAt были здесь эффективными, вы захотите использовать их вместе с orderBy.По сути, вы должны будете дать указание Firestore рассмотреть сначала все элементы по порядку времени, а затем возвращать только даты в длинном последовательном списке, которые соответствуют вашему времени начала и окончания.

Это должно сделатьтрюк, и вы можете прочитать о них и их требованиях здесь:

https://firebase.google.com/docs/firestore/query-data/query-cursors https://firebase.google.com/docs/reference/js/firebase.firestore.Query.html

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