Я создаю приложение 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>