Discriminators
là một cơ chế kế thừa lược đồ. Chúng cho phép bạn có nhiều mô hình với các lược đồ chồng chéo trên cùng một bộ sưu tập MongoDB cơ bản . hơn là các tài liệu khác nhau. Có vẻ như bạn hiểu sai về discriminators
của cầy mangut. Đây là một bài viết có thể giúp bạn nắm bắt chính xác.
Hướng dẫn phân biệt đối xử mongoose
Dưới đây là một số mẫu mã để đáp ứng yêu cầu của bạn, để lưu lược đồ dẫn xuất dưới dạng các tài liệu được phân tách
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');
});