Как вернуть документы, которые были созданы между 2 отметками времени, используя Firestore - PullRequest
1 голос
/ 07 ноября 2019

Я хочу загрузить все документы, которые были сохранены между 2 отметками времени, из моей коллекции. Я вызываю сервисную функцию в моем component.ts, где я устанавливаю в качестве параметров 2 нужные мне временные метки. Как я могу запросить базу данных, чтобы вернуть мне документы, которые я хочу использовать ref.where

Эта функция находится в моем сервисе

findItems(colId: string, timestamp1: Date, timestamp2: Date){
    return this.db.collection(`items/${colId}/stuff`,ref =>{
      return ref.where("createdAt", ">=", startTime );
        }).valueChanges()
    } 

Я вызываю эту функцию в моем компоненте, как указано выше

  public items: Observable<any>

this.myService.findItems(this.item.colId, this.item.time1, this.item.time2)

Фактическое поле для одного элемента:

createdAt field on one item

Пример отметок времени начала / окончания:

example start/end timestamps

1 Ответ

0 голосов
/ 07 ноября 2019

В 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 и ее предостережений (например, не возвращаетидентификатор документа) здесь .

...