sql >> Databasteknik >  >> NoSQL >> MongoDB

Att ärva Mongoose-scheman

Discriminators är en schemaarvsmekanism. De gör att du kan ha flera modeller med överlappande scheman ovanpå samma underliggande MongoDB-samling . snarare än olika dokument. Det verkar som att du missförstår discriminators av mangust. Här är en artikel som kan hjälpa dig att fånga den korrekt.

Guide till mangustdiskriminatorer

Här är några kodexempel för att uppfylla dina krav, för att spara det härledda schemat som separerade dokument

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');
 });


  1. Stöder Spring Data Redis (1.3.2.RELEASE) JedisSentinelPool of jedis?

  2. Varför finns det ett understreck framför MongoDb dokument-id?

  3. ImportError:Ingen modul med namnet redis

  4. Mongoid:hur frågar man efter alla objekt där värdet är noll?