Мне нужно запросить в коллекции пожарного магазина записи, в которых время начала (которое является числом) равно >= slot.start
и <= slot.end
.
как это:
.collection('Entries', ref => ref.where('timeStart', '>=', slot.timeStart).where('timeEnd', '<=', slot.timeEnd))
но я получаю эту ошибку:
Invalid query. All where filters with an inequality (<, <=, >, or >=) must be on the same field.
Я думал, что этот запрос будет работать с составным индексом, но, как говорит ошибка, это не работает.
Когда я изменяю запрос на это:
.collection('Entries', ref => ref.where('timeStart', '==', slot.timeStart).where('timeEnd', '<=', slot.timeEnd))
Я могу создать для него индекс. Кроме того, когда я заменяю 2 '<=' на '==', мне даже не нужен индекс для него. </p>
Я не думал, что мой запрос такой продвинутый, и я немного разочарован тем, что FireStore не может выполнить этот запрос. Итак, что является лучшим решением для моей проблемы? Следующая лучшая вещь, чтобы пропустить 2-й оператор запроса, как это
.collection('Entries', ref => ref.where('timeStart', '>=', slot.timeStart))
А затем перебрать результаты и проверить, если timeEnd <= entry.timeEnd
"вручную"? Мне кажется, это действительно плохое решение, потому что тогда мне может понадобиться загрузить много данных.