Attualmente ho due schemi quasi identiche:Mongoose: estendere gli schemi
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},
});
E
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},
});
La loro unica differenza è nella convalida: gli utenti non hanno bisogno di un nome, cognome o telefono. Tuttavia, gli amministratori devono avere queste proprietà definite.
Sfortunatamente il codice precedente non è molto SECCO, in quanto sono quasi identici. Pertanto mi chiedo se sia possibile costruire uno adminSchema
basato sullo userSchema
. Es .:
var adminSchema = mongoose.Schema(userSchema);
adminSchema.change('firstname', {required: true});
adminSchema.change('lastname', {required: true});
adminSchema.change('phone', {required: true});
Ovviamente questo è solo uno pseudocodice. È possibile qualcosa del genere?
Un'altra domanda molto simile è se è possibile creare un nuovo schema basato su un altro e aggiungerne altre. Ad esempio:
var adminSchema = mongoose.Schema(userSchema);
adminSchema.add(adminPower: Number);
E la gente lo fa https://github.com/briankircho/mongoose-schema-extend vedere questo. – diproart