Mungo: Erweiterung von Schemata

Derzeit habe ich zwei fast identische Schemata:

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},

});

Und

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},

});

Der einzige Unterschied besteht in der Validierung: Benutzer benötigen keinen Vor- oder Nachnamen und kein Telefon. Administratoren müssen diese Eigenschaften jedoch definiert haben.

Leider ist der obige Code nicht sehr TROCKEN, da sie fast identisch sind. Deshalb frage ich mich, ob es möglich ist, eine zu bauenadminSchema basierend aufuserSchema. Z.B.:

var adminSchema = mongoose.Schema(userSchema);
adminSchema.change('firstname', {required: true});
adminSchema.change('lastname', {required: true});
adminSchema.change('phone', {required: true});

Das ist natürlich nur Pseudocode. Ist so etwas möglich?

Eine weitere sehr ähnliche Frage ist, ob es möglich ist, ein neues Schema basierend auf einem anderen zu erstellen und diesem weitere Eigenschaften hinzuzufügen. Zum Beispiel:

var adminSchema = mongoose.Schema(userSchema);
    adminSchema.add(adminPower: Number);

Antworten auf die Frage(8)

Ihre Antwort auf die Frage