как создать базу данных для аутентификации пользователей, таких как студент, учитель, супер администратор - PullRequest
0 голосов
/ 04 мая 2019

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

Если учитель регистрируется, включая электронную почту, пароль, имя, фамилию и т. Д., Существует коллекция.

если в реестре учащегося есть адрес электронной почты, пароль, имя, фамилия и т. Д., Существует другая коллекция.

наша вся электронная почта и пароль будут одной коллекцией

пользователь - таблица / коллекция - электронная почта: test@gmail.com - пароль: asdfasdf

студент - стол / коллекция - имя: 'sujon "

учитель - стол / коллекция - имя: "Суджон"

const UserSchema = mongoose.Schema({
    email: {
        type: String,
        required: true,
    },
    password: {
        type: String,
        required: true,
    },
    isAdmin: {
        type: Boolean,
        default: false,
    },
})


const StudentSchema = mongoose.Schema({
    user: {
        type: Schema.Types.ObjectId,
        ref: 'user',
    },
    firstname: {
        type: String,
    },
    lastname: {
        type: String,
    },
    photo: {
        type: String,
    },
    education: {
        type: String,
    },
    birth: {
        type: Date,
    },
    sex: {
        type: Boolean,
    },
})
  const TeacherSchema = mongoose.Schema({
  user: {
    type: mongoose.Schema.ObjectId,
    ref: "user"
  },
  firstname: {
    type: String
  },
  lastname: {
    type: String
  },
  photo: {
    type: String
  },
  designation: {
    type: String
  },
  birth: {
    type: Date
  },
  sex: {
    type: Boolean
  }
   });

как можно реализовать дизайн базы данных

1 Ответ

0 голосов
/ 05 мая 2019

Создание одной пользовательской схемы было бы хорошо.Вы можете иметь одну схему со всеми свойствами (поскольку все три типа пользователей имеют почти одинаковые свойства), а затем добавить поле «роли», например:

roles: [{ type: String }]

Поле ролей может иметь несколько ролей ['Учитель »,« Студент »...].Таким образом, у одного пользователя может быть несколько ролей, например, учитель также может быть администратором и т. Д.

Также вам не придется создавать новую модель всякий раз, когда вводится новая роль.

Пользователи могут быть запрошены на основе их ролей.Роли могут затем использоваться для аутентификации, например, пользователь с ролью «Учитель» может создавать назначение или пользователь с ролью «Ученик» может отправлять назначения.При регистрации пользователя вы можете установить некоторую проверку модели на стороне API или на стороне клиента, чтобы принять определенную модель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...