Пн goose: Предотвратить .save (), чтобы установить значениеcriminatorKey - PullRequest
0 голосов
/ 11 апреля 2020

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

Проблема в том, что теперь любой может создать свою учетную запись администратора, разместив простой json на маршруте /register!

Вот где я стоять прямо сейчас:

Моя модель пользователя:

    const UserSchema = new Schema({
    ... we don't care...
    role: {
      type: String,
      default: "Common",
      immutable: true,
      set: function(v){
        return "Common";
      }
    }
  },
  { strict: true, discriminatorKey: 'role' }
);

И модель Admin, которая расширяет пользователя благодаря дискриминатору "роль"

const AdminSchema = User.discriminator('Admin', new Schema({
admin:{
   type:Boolean,
   default:true
}
},{strict:true}), {discriminatorKey: 'role'});

Как вы можете видеть Я пытался использовать «Общий» как единственно возможное значение для users.role, но, тем не менее, если я отправлю этого пользователя в /register:

{...user info..., admin: true, role:"Admin"}

, я получу совершенно новую учетную запись администратора ...

Если нужно, вот мой register контроллер, но он очень прост:

  let user = new User(req.body);
  user.save()
  then(u=>{
    res.json({
      success:true,
      profile: u
    });
  })

NB: Я думал о создании схемы администратора, а также об изменении запись пользователя в контроллере, но я бы хотел сделать это самым чистым способом в Mon goose.

Спасибо за вашу помощь:)

...