В настоящее время у меня есть две почти идентичные схемы:
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);