Discriminators
एक स्कीमा विरासत तंत्र हैं। वे आपको समान अंतर्निहित MongoDB संग्रह के शीर्ष पर ओवरलैपिंग स्कीमा वाले एकाधिक मॉडल रखने में सक्षम बनाते हैं . विभिन्न दस्तावेजों के बजाय। ऐसा लगता है कि आप discriminators
को गलत समझ रहे हैं नेवले का। यहाँ एक लेख है जो आपको इसे सही ढंग से पकड़ने में मदद कर सकता है।
नेवला भेदभाव करने वालों के लिए गाइड
व्युत्पन्न स्कीमा को अलग दस्तावेज़ों के रूप में सहेजने के लिए, आपकी आवश्यकता को पूरा करने के लिए यहां कुछ कोड नमूने दिए गए हैं
function AbstractEntitySchema() {
//call super
Schema.apply(this, arguments);
//add
this.add({
entityName: {type: String, required: false},
timestamp: {type: Date, default: Date.now},
index: {type: Number, required: false},
objectID: {type: String},
id: {type: String}
});
};
util.inherits(AbstractEntitySchema, Schema);
//Message Schema
var MessageSchema = new AbstractEntitySchema();
MessageSchema.add({
text: {type: String, required: true},
author: {type: String, required: true},
type: {type: String, required: false}
});
//Room Schema
var RoomSchema = new AbstractEntitySchema();
RoomSchema.add({
name: {type: String, required: true},
author: {type: String, required: false},
messages : [MessageSchema],
});
var Message = mongoose.model('Message', MessageSchema);
var Room = mongoose.model('Room', RoomSchema);
// save data to Message and Room
var aMessage = new Message({
entityName: 'message',
text: 'Hello',
author: 'mmj',
type: 'article'
});
var aRoom = new Room({
entityName: 'room',
name: 'Room1',
author: 'mmj',
type: 'article'
});
aRoom.save(function(err, myRoom) {
if (err)
console.log(err);
else
console.log("room is saved");
});
aMessage.save(function(err) {
if (err)
console.log(err);
else
console.log('user is saved');
});