Inheritance in mongoose Inheritance in mongoose express express

Inheritance in mongoose


For others looking for this functionality, Mongoose 3.8 now has Schema Inheritance via Discriminator functionality:

https://github.com/LearnBoost/mongoose/pull/1647


I know this is an oldie, but I arrived here looking for the answer to the same question and ended up doing something a little different. I don't want to use discriminators because all the documents are stored in the same collection.

ModelBase.js

var db = require('mongoose');module.exports = function(paths) {    var schema = new db.Schema({         field1: { type: String, required: false, index: false },        field2: { type: String, required: false, index: false }     }, {         timestamps: {             createdAt: 'CreatedOn',             updatedAt: 'ModifiedOn'         }     });    schema.add(paths);    return schema;};

NewModel.js

var db = require('mongoose');var base = require('./ModelBase');var schema = new base({    field3: { type: String, required: false, index: false },    field4: { type: String, required: false, index: false }});db.model('NewModelItem', schema, 'NewModelItems');

All 4 fields will be in NewModelItem. Use ModelBase for other models where you want to use the same fields/options/etc. In my project I put the timestamps in there.

Schema.add is called in the Schema constructor so the model should be assembled as if all the fields were sent in the original constructor call.