Discriminators
zijn een overervingsmechanisme voor schema's. Ze stellen u in staat om meerdere modellen met overlappende schema's te hebben bovenop de dezelfde onderliggende MongoDB-verzameling . in plaats van verschillende documenten. Het lijkt erop dat je de discriminators
verkeerd begrijpt van mangoest. Hier is een artikel dat je kan helpen om het correct te vangen.
Gids voor mangoest-discriminators
Hier zijn enkele codevoorbeelden om aan uw vereisten te voldoen, om het afgeleide schema als afzonderlijke documenten op te slaan
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');
});