У меня проблемы с дифференцированием учетных записей пользователей с Пн 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.
Спасибо за вашу помощь:)