वर्तमान में मैं दो लगभग समान स्कीमा है:नेवला: विस्तार स्कीमा
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, lastname या फोन की जरूरत नहीं है। हालांकि व्यवस्थापक इन गुणों को परिभाषित किया जाना चाहिए।
दुर्भाग्यवश उपरोक्त कोड बहुत शुष्क नहीं है, क्योंकि वे लगभग समान हैं। इसलिए मैं सोच रहा हूं कि 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);
और लोग बदनाम करते हैं https://github.com/briankircho/mongoose-schema-extend इसे देखें। – diproart