Registry / database / mongoose-schema-extend

mongoose-schema-extend

JSON →
library0.2.2jsnpmunverified

Adds schema inheritance and discriminator key support to Mongoose schemas, enabling model hierarchies stored in a single collection. Version 0.2.2 is the latest stable release (last updated 2014). Requires Harmony proxies (--harmony_proxies flag) since 0.2.1. Distinguished by its simple extend() method and automatic discriminator key population for polymorphic queries. Alternatives like mongoose's built-in discriminators are more stable and don't require special flags.

npm install mongoose-schema-extend
INSTALL
IMPORT
SIG · MONGOOSE-SCHEMA-EX
M
mongoose-schema-extend
databasejavascriptv0.2.2
harness data pending
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

extend (via require)
var extend = require('mongoose-schema-extend');
import extend from 'mongoose-schema-extend';
No default export; only side-effect module that patches Schema.prototype.extend . ESM import not supported.
Schema.prototype.extend
var EmployeeSchema = PersonSchema.extend({ department: String });
var EmployeeSchema = extend(PersonSchema, { department: String });
extend is invoked as a method on a Schema instance, not as a standalone function.
Discriminator key option
var VehicleSchema = new Schema({ make: String }, { discriminatorKey: '_type' });
var VehicleSchema = new Schema({ make: String }, { discriminatorKey: '_type', collection: 'vehicles' }); // missing collection
discriminatorKey requires a shared collection for polymorphic queries.

Demonstrates schema inheritance using extend() to create a sub-schema and save a document.

var mongoose = require('mongoose'); require('mongoose-schema-extend'); var Schema = mongoose.Schema; var PersonSchema = new Schema({ name: String }, { collection: 'people' }); var EmployeeSchema = PersonSchema.extend({ department: String }); var Person = mongoose.model('Person', PersonSchema); var Employee = mongoose.model('Employee', EmployeeSchema); var alice = new Employee({ name: 'Alice', department: 'Engineering' }); alice.save(function(err) { if (err) console.error(err); else console.log('Saved:', alice); });
Debug
Known issues
deprecatedmongoose-schema-extend is outdated and unmaintained. Mongoose has built-in discriminator support since version 3.6, which is more stable and recommended.
fix
Migrate to mongoose built-in discriminators: use Model.discriminator() instead.
affects: >=0.0.0
breakingVersion 0.2.1+ requires the V8 flag --harmony_proxies. Without it, extend() will fail silently or throw.
fix
Run Node with --harmony_proxies or downgrade to 0.2.0.
affects: >=0.2.1
breakingThe extend() method modifies the prototype chain and may interfere with Mongoose internal operations, causing unexpected behavior with indexes or middleware.
fix
Use built-in discriminators or manual schema composition.
affects: >=0.0.0
gotchaWhen using discriminatorKey, you must ensure the parent schema has a collection defined. Otherwise documents may be saved to a wrong collection.
fix
Always specify { collection: 'yourCollection' } in parent schema options.
affects: >=0.0.0
Errors
Common errors & fixes
Error: Schema hasn't been registered for model.
Model registered with a schema that was extended after registration.
fix
Register models after all extend() calls, and ensure parent model is registered before child.
TypeError: Object #<Schema> has no method 'extend'
require('mongoose-schema-extend') not called before using extend(), or required after schema creation.
fix
Require mongoose-schema-extend at the top of your file, before any schema definitions.
ReferenceError: Proxy is not defined
Node version < 6 or --harmony_proxies flag missing for Node >= 0.2.1
fix
Use Node >= 6 or add --harmony_proxies flag. Alternatively downgrade to version 0.2.0.
Upgrade
Version history
0.2.2latest on npm
Audit
Dependencies
mongooserequiredpeer dependency for schema operations
Agent activity
9 hits · last 30 days
node
8
Resources
mongoose-schema-extend — npm install mongoose-schema-extend · libregistry