Мангуст: расширяющиеся схемы
В настоящее время у меня есть две почти идентичные схемы:
var userSchema = mongoose.Schema({
email: {type: String, unique: true, required: true, validate: emailValidator},
passwordHash: {type: String, required: true},
firstname: {type: String, validate: firstnameValidator},
lastname: {type: String, validate: lastnameValidator},
phone: {type: String, validate: phoneValidator},
});
А также
var adminSchema = mongoose.Schema({
email: {type: String, unique: true, required: true, validate: emailValidator},
passwordHash: {type: String, required: true},
firstname: {type: String, validate: firstnameValidator, required: true},
lastname: {type: String, validate: lastnameValidator, required: true},
phone: {type: String, validate: phoneValidator, required: true},
});
Их единственное отличие заключается в валидации: пользователям не нужны имя, фамилия или телефон. Администраторы, однако, должны иметь эти свойства определены.
К сожалению, приведенный выше код не очень сухой, так как онипочти идентичны. Поэтому мне интересно, возможно ли построитьadminSchema
на основеuserSchema
, Например.:
var adminSchema = mongoose.Schema(userSchema);
adminSchema.change('firstname', {required: true});
adminSchema.change('lastname', {required: true});
adminSchema.change('phone', {required: true});
Очевидно, чтопросто псевдокод. Возможно ли что-то подобное?
Еще один очень похожий вопрос: возможно ли создать новую схему на основе другой и добавить к ней еще несколько свойств. Например:
var adminSchema = mongoose.Schema(userSchema);
adminSchema.add(adminPower: Number);