MEAN Stack - MongoDB - циклический просмотр документов с двумя различными условиями - PullRequest
0 голосов
/ 08 апреля 2019

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

enter image description here enter image description here

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

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

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

Я пытался с:

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

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

enter image description here

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

enter image description here

Пожалуйста, помогите мне, как решить эту проблему, практически я хочу отобразить сообщение «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 && userId === patient.doctor">
             ...
        </accordion>
        <p class="text-center" *ngIf="patient.length == 0 || userIsAuthenticated && (userId === patient.doctor) == 0">Niste dodali pacijente...</p>
    </div>
</div>

Ответы [ 2 ]

0 голосов
/ 08 апреля 2019

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

<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 && 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>

0 голосов
/ 08 апреля 2019

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

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

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

...