AngularFire2 und FirestorAngularFire2 Firestor Dynamische Abfrage: Wo Startzeit == currentDateRange
Ziel: Abfrage von Daten aus Firestor, wo Startzeit == currentDateRange
Frage: mit der Dynamic-Abfrage in Firestor Troubled. Ich lese durch die documentation und schaute auf die example geliefert. Ich habe wöchentliche Lektionen in meinem Firestore, d. H. (Lektion 1, Lektion 2, Lektion 3, usw.). Sie haben jeweils eine StarTime (Zeitstempel) (18. Dezember 2017, 25. Dezember 2017, 1. Januar 2018).
Mein Ziel ist es, dass meine Webseite nur das aktuelle Unterrichtsmaterial für die angegebene Woche für meine Schüler anzeigt. Die wöchentliche Lektion würde am Montag um 00:00 Uhr (Mitternacht Sonntag) bis Sonntag 23:59 Uhr, Sieben Tage Datumsbereich angezeigt werden.
Dann, wenn die neue Woche wieder am Montag begann, würde ich die neue Lektion angezeigt haben, in dem Beispiel hier, Lektion 2 - 25. Dezember 2017. Stated mit, wie das aktuelle Datum zu identifizieren, dann den Zeitraum hinzufügen, oder aktueller Tag plus sechs weitere Tage.
Von MySql zu Firestore übergehen. Also immer noch sehr fremd für mich. Unten ist die Arbeit aufgeführt, die ich bisher gemacht habe (mit sehr wenig Erfolg). Abbildung der Firestore-Datenstruktur, der TypeScript-Datei und des HTML-Codes.
Zum ersten Mal auf StackOverflow, hoffentlich habe ich die richtigen Richtlinien zum Einreichen dieser Frage befolgt. Vielen Dank für Ihre Hilfe.
Firestor Daten
TS
import { Component } from '@angular/core';
import { AngularFirestore, AngularFirestoreDocument, AngularFirestoreCollection } from 'angularfire2/firestore';
import { Observable } from 'rxjs/Observable';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import 'rxjs/add/operator/switchmap'
import 'rxjs/add/observable/combineLatest';
export interface Week {
lesson: string;
startTime: Date;
}
@Component({
selector: 'app-calendar',
templateUrl: './calendar.component.html',
styleUrls: ['./calendar.component.css'],
})
export class CalendarComponent {
weeks: Observable<any[]>;
dateFilter: BehaviorSubject<string | null>;
currentDate: new Date();
endDate: string;// need to figure out how to add seven days from currentDate
constructor(private afs: AngularFirestore) {
this.dateFilter = new BehaviorSubject(null);
this.weeks = Observable.combineLatest(
this.dateFilter).switchMap(([startTime]) => afs.collection<Week>('weeks', ref => {
let query : firebase.firestore.CollectionReference | firebase.firestore.Query = ref;
if (startTime) { query = query.where('startTime', '=>', currentDate) };
if (startTime) { query = query.where('startTime', '<', endDate) };
return query;
}).valueChanges());
}
HTML
<ul *ngFor="let week of weeks | async">
<li >
{{ week.lesson }}
</li>
<li>
{{ week.startTime }}
</li>
</ul>