Как настроить роли участников для схемы Users с помощью mongoose - PullRequest
0 голосов
/ 11 октября 2018

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

const UserSchema = new Schema({
  username: {
    type: String,
    required: true
  },
  role: {
    type: [
      {
        type: String,
        enum: ["user", "admin"],
        default: ["user"]
      }
     ]
   },
   email: {
     type: String,
     required: true
   },
   password: {
     type: String,
     required: true
   },
   date: {
     type: Date,
     default: Date.now
   }
  });

1 Ответ

0 голосов
/ 11 октября 2018

То, что вы хотели бы сделать, - это начать с наименьшего набора свойств, который вам нужен, который разделяется между 3 типами моделей (guest, user, admin) и который будет вашей базовой схемой.

Затем, используя дескрипторы Mongoose (наследование схемы mongoose), вы унаследуете его и украсите большим количеством свойств, которые вы будете моделировать на уровне.

Например, ваш guest может неиметь свойство role, так как он гость.Поэтому вы можете начать с базовой модели guest и добавить поверх нее другие реквизиты, необходимые для пользователя / администратора.

Пример:

var options = {discriminatorKey: 'type'};

var guestSchema = new mongoose.Schema({
  date: { type: Date, default: Date.now },
  username: { type: string, default: 'guest_' + Date.now },
}, options);

var Guest = mongoose.model('Guest', guestSchema);

var User = Guest.discriminator('User',
  new mongoose.Schema({password: String}, options));

// Now you have Guest as base model and User with decorated 'password' field

Вы можете прочитать Официальная документация по этому вопросу здесь

В Интернете также есть множество статей на эту тему.

...