В настоящее время у меня есть две почти одинаковые схемы:Mongoose: расширение схемы
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},
});
Их единственное отличие заключается в проверке: Пользователям не нужен Firstname, фамилия или телефон. Однако админы должны определять эти свойства.
К сожалению, приведенный выше код не очень СУХОЙ, так как он почти идентичен. Поэтому мне интересно, можно ли построить 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);
И люди alredy делают это https://github.com/briankircho/mongoose-schema-extend см. Это. – diproart