sql >> Database >  >> NoSQL >> MongoDB

Mangoeste-schema's overnemen

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


  1. Hoe deel te nemen aan twee verzamelingen in mongo zonder te zoeken

  2. Mongoose, CastError:Cast to Array mislukt voor waarde bij het opslaan van een model dat een model bevat

  3. MySQL, MongoDB en PostgreSQL beheren met ChatOps van Slack

  4. Hoekige Google Maps/NodeJS:markeringen uit database weergeven