Запрос Firebase не возвращает результаты при каждом запуске - PullRequest
0 голосов
/ 08 марта 2019

Я реализовал функцию поиска в угловом 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...