MEAN Stack - MongoDB Функциональность поиска - PullRequest
0 голосов
/ 11 июня 2019

Я создаю приложение MEAN Stack, но теперь у меня есть одна проблема с запросом MongoDB (функция поиска) ...

Ранее я выбрал всех пользователей из базы данных, backend код здесь Patient.ts (вы заметите const patientQuery = Patient.find();), и это прекрасно работает.

Frontend

пациента форм-list.component.ts

  ngOnInit() {

      // Start the spinner
      this.loading = true;

     // Fetch a list of patients and the beginning
     this.patientFormService.getPatients(this.patientsPerPage, this.currentPage);
     ...

пациенто-form.service.ts

   getPatients(patientsPerPage: number, currentPage: number) {
    const queryParams = `?pacijenataPoStranici=${patientsPerPage}&trenutnaStranica=${currentPage}`;
    this.http
        .get<{ message: string, patients: any, maxPatients: number }>( BACKEND_URL + queryParams)
        // Execute map on every data that makes it through Observable stream
        .pipe(map((patientData) => {
            return { patients: patientData.patients.map(patient => { 
                return {
                    id: patient._id,
                    ...patient,
                };
            }),
            maxPatients: patientData.maxPatients
            };
        }))
        .subscribe(transformedPatientsData => {
            this.patients = transformedPatientsData.patients; 
            this.patientsUpdated.next({
              patients: [...this.patients],
              patientCount: transformedPatientsData.maxPatients
            });
        }); 
}

Теперь вместо Patient.find() мне нужно динамически передавать запрос { phDiagnosis: { $in: [ /^ph/i ] } }, но я не уверен, как это сделать.

Когда я передаю запрос вручную, функциональность поиска работает хорошо, и на стороне клиента будут выбираться только те пациенты, которые соответствуют этому критерию ...

На стороне клиента у меня будет панель поиска, где пользователь должен будет заполнить форму, и при нажатии на кнопку «Pretraga» тогда Patient.find() должен заполниться динамически, и функциональность поиска должна работать.

                 <form (ngSubmit)="onSearchPatient(searchForm)" #searchForm="ngForm" *ngIf="!loading">
            <div class="input-group mb-3">
                <div class="input-group-prepend">
                    <select class="form-control criterion" (change)="criterionHasChanged($event.target.value)" [ngModel]="criterionCategory || ''" name="criterionCategory">
                        <option [ngValue]="''" [disabled]="true">Kriterijum pretrage</option>
                        <option *ngFor="let criterion of searchCriterions" 
                                [ngValue]="criterion">{{ criterion }}
                        </option>
                    </select>
                </div>
                <div class="input-group-prepend" *ngIf="!loading && ages">
                    <select class="form-control ages rounded-0" (change)="agesHasChanged($event.target.value)" [ngModel]="ageCategory || ''" name="ageCategory">
                        <option [ngValue]="''" [disabled]="true">Izaberi</option>
                        <option *ngFor="let age of agesCriterions" 
                                [ngValue]="age">{{ age }}
                        </option>
                    </select>
                </div>
                <input type="text" 
                       class="form-control" 
                       id="previousDeseases" 
                       name="searchCriterion"
                       [ngModel]="search"
                       placeholder="Unesite pojam za pretragu...">
                <div class="input-group-append">
                    <button class="btn btn-secondary" type="submit">
                        Pretraga
                    </button>
                </div>
            </div>
        </form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...