は現在、私は2つのほとんど同じスキーマを持っている:マングース:拡張スキーマ
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、姓や電話は必要ありません。ただし、管理者はこれらのプロパティを定義する必要があります。
残念ながら、上記のコードはあまりDRYではありません。ほとんど同じです。したがって、userSchema
に基づいてadminSchema
を構築することが可能かどうかは疑問です。例:
var adminSchema = mongoose.Schema(userSchema);
adminSchema.change('firstname', {required: true});
adminSchema.change('lastname', {required: true});
adminSchema.change('phone', {required: true});
明らかにそれは疑似コードです。このようなことは可能でしょうか?
もう1つの非常によく似た質問は、別のものに基づいて新しいスキーマを作成し、それにいくつかのプロパティを追加できるかどうかです。たとえば、
var adminSchema = mongoose.Schema(userSchema);
adminSchema.add(adminPower: Number);
そして、人々はそれをするhttps://github.com/briankircho/mongoose-schema-extendこれを参照してください。 – diproart