СРЕДНИЙ стек — MongoDB — перебор документов с двумя разными условиями

#angular #mongodb #mean-stack

#angular #mongodb #средний стек

Вопрос:

Я создаю приложение MEAN Stack для doctor, и в MongoDB у меня разные коллекции (пользователи и пациенты) — смотрите Прикрепленные изображения, чтобы лучше понять, как это выглядит.

введите описание изображения здесь
введите описание изображения здесь

Я создал функциональность, в которой каждый пользователь может входить и выходить из системы со своей электронной почтой и паролем, а при входе в систему он может видеть, редактировать и удалять только добавленных им пациентов, а не других пациентов (от других врачей).).

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

У меня проблема, когда я хочу отобразить сообщение «Niste dodali pacijente …» (У вас еще нет пациентов …) когда у вошедшего в систему пользователя нет пациентов, или удалите их предыдущих пациентов…

Я пытался с :

  <p class="text-center" *ngIf="patient.length == 0 || userIsAuthenticated amp;amp; (userId === patient.doctor) == 0">Niste dodali pacijente...</p>
  

и когда доктор 4 вошел в систему, он получает это (его пациенты и сообщения о том, что у предыдущего врача нет пациентов)

введите описание изображения здесь

та же ситуация для других докторов (например, Doctor 3)

введите описание изображения здесь

Пожалуйста, помогите мне, как исправить эту проблему, практически я хочу отобразить сообщение «Niste dodali pacijente», только если этот врач удалит всех пациентов или если он еще не добавляет пациентов. Спасибо

 <div class="container">
<div class="row">
    <div class="col-12" *ngFor="let patient of patients">
       <!-- Patient accordion -->
        <accordion [closeOthers]="onePatientAtTime" ngIf="userIsAuthenticated amp;amp; userId === patient.doctor">
             ...
        </accordion>
        <p class="text-center" *ngIf="patient.length == 0 || userIsAuthenticated amp;amp; (userId === patient.doctor) == 0">Niste dodali pacijente...</p>
    </div>
</div>
  

Комментарии:

1. Добро пожаловать в Stackoverflow? Пожалуйста, избегайте изображений, где это возможно. Первые два следует заменить фрагментами json с примерами документов. Добавьте соответствующий код, в котором вы запрашиваете базу данных для получения списка, который вы пытаетесь отобразить.

2. Не могли бы вы поделиться своим ответом API.

Ответ №1:

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

 <div class="container">
<div class="row">
    <div *ngIf="shouldNoPatientsShow" class="col-12" *ngFor="let patient of patients">
       <!-- Patient accordion -->
        <accordion [closeOthers]="onePatientAtTime" ngIf="userIsAuthenticated amp;amp; userId === patient.doctor">
             ...
        </accordion>
    </div>
        <p class="text-center" *ngIf="shouldNoPatientsShow || userIsAuthenticated amp;amp; (userId === patient.doctor) == 0">Niste dodali pacijente...</p>
</div>
  

и в файле ts установите для переменной shouldNoPatient значение true, если массив пациентов равен 0

Ответ №2:

Спасибо вам, ребята, за вашу помощь, я изменил логику, и теперь каждый пациент будет виден любому врачу, но только врач, который добавил пациента, может редактировать и / или удалять этого пациента…

 <div class="container">
   <div class="row">
     <div class="col-12">
       <!-- Patient accordion -->
        <accordion [closeOthers]="onePatientAtTime" *ngIf="patients.length > 0">
            <accordion-group #group class="mb-3" *ngFor="let patient of patients">
                ...
                <div class="edit-form-buttons text-right" *ngIf="userIsAuthenticated amp;amp; userId === patient.doctor">
                    <button type="button" class="btn btn-info mr-2" [routerLink]="['/izmjena-pacijenta', patient.id]">Izmijeni</button>
                    <button type="button" class="btn btn-danger" (click)="onDelete(patient.id)">Izbriši</button>
                </div>
            </accordion-group>
        </accordion>
        <p class="text-center" *ngIf="patients.length <= 0">Niste dodali pacijente...</p>
    </div>
</div>