MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Наследяване на схеми на Mongoose

Discriminators са механизъм за наследяване на схема. Те ви позволяват да имате множество модели с припокриващи се схеми върху една и съща основна колекция MongoDB . а не различни документи. Изглежда, че не разбирате discriminators от мангуста. Ето една статия, която може да ви помогне да го уловите правилно.

Ръководство за дискриминатори на mongoose

Ето някои примерни кодове, които да отговорят на вашето изискване, за да запазите извлечената схема като отделни документи

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Eval MongoDB Query с NodeJS

  2. Проверете за съществуването на множество полета в MongoDB документ

  3. Вътрешен масив за сортиране на Mongodb

  4. Как да настроите FeatureCompatibilityVersion в MongoDB

  5. неуспешно с получен пулс от член със същия ID на член като нашия:0