Я реализовал функцию поиска в угловом 7 приложении, которое использует Firebase. Я хочу, чтобы пользователь всегда указывал значения from и to и необязательно значение даты. В данный момент, когда пользователь предоставляет все 3 значения (от, до и на дату), запрос возвращает ожидаемый результат. Но если предоставляются только значения от и до, запрос иногда возвращает ожидаемый результат, а в другое - нет. Мне не удалось найти ошибку в моем коде, поэтому мне нужно, чтобы вы, ребята, помогли взглянуть на мой код, чтобы убедиться, что я что-то не так делаю. Вот мой код
schedule.service.ts
searchSchedulesList(route: string, date) {
let now = this.formatDate(this.today);
if (date != null) {
return this.afs
.collection("schedules", ref =>
ref
.where("route", "==", route)
.where("date", "==", date)
.where("date", ">=", now)
.orderBy("date", "asc")
.orderBy("time", "asc")
)
.snapshotChanges();
} else {
return this.afs
.collection("schedules", ref => ref.where("route", "==", route))
.snapshotChanges();
}
}
schedule.component.ts
search(route: string, date) {
this.scheduleService.searchSchedulesList(route, date).subscribe(data => {
this.schedules = data.map(e => {
return {
id: e.payload.doc.id,
...e.payload.doc.data()
} as Schedule;
});
});
}
Это поисковая форма, используемая для получения значений from
to
и date
<form [formGroup]="searchForm">
<div class="row">
<div class="form-group col-3">
<select formControlName="from" id="from" class="form-control">
<option value="">From</option>
<option
*ngFor="let destination of destinations"
value="{{ destination.abbreviation }}"
>{{ destination.fullname }}</option
>
</select>
</div>
<div class="form-group col-3">
<select formControlName="to" id="to" class="form-control">
<option value="">To</option>
<option
*ngFor="let destination of destinations"
value="{{ destination.abbreviation }}"
>{{ destination.fullname }}</option
>
</select>
</div>
<div class="form-group col-3">
<input formControlName="date" type="date" class="form-control" />
</div>
<div class="col-3">
<button
class="btn btn-primary btn-sm"
(click)="
search(
searchForm.value.from + searchForm.value.to,
searchForm.value.date
)
"
>
Search
</button>
<button class="btn btn-secondary btn-sm" (click)="clear()">
Reset
</button>
</div>
</div>
</form>