Inheritance in mongoose
For others looking for this functionality, Mongoose 3.8 now has Schema Inheritance via Discriminator functionality:
You may want to look at using a Mongoose Plugin:
A plugin that does what you want 'out of the box' is here:
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.