В Firestore вполне нормально создавать составной запрос, используя диапазоны для поля, если в задействовано только одно поле . Это не должно иметь проблем с этим.
Предполагается, что поле createdAt
создается для всех документов в этой коллекции как поле Timestamp, а timestamp1
всегда меньше, чем timestamp2
этот код должен сгенерировать запрос, который делает то, что вы ищете, и вернуть Observable
, что вам нужно:
findItems(colId: string, timestamp1: Date, timestamp2: Date) {
return this.db.collection(`items/${colId}/stuff`, ref => {
return ref.where('createdAt', '>=', firestore.Timestamp.fromDate(timestamp1))
.where('createdAt', '<=', firestore.Timestamp.fromDate(timestamp2));
}).valueChanges()
}
Это работает в AngularFire, если вы импортировали пространство имен firestore
, например, так:
import { firestore } from 'firebase';
Существует более полная документация о том, как это вписывается в AngularFire здесь , хотя документация для ValueChanges
и ее предостережений (например, не возвращаетидентификатор документа) здесь .