
> models/book.js // Define our Book schema const BookSchema = new mongoose.Schema( { title: { type: String, required: true }, author: { type: String, required: true }, release_date: { type: Date, required: true }, } ); // Create a model from our schema module.exports = mongoose.model('Book', BookSchema); > models/movie.js const MovieSchema = new mongoose.Schema( { title: { type: String, required: true }, director: { type: String, required: true }, release_date: { type: Date, required: true }, } ); module.exports = mongoose.model('Movie', MovieSchema); > models/book.js const baseOptiOns= { discriminatorKey: 'itemtype', // our discriminator key, could be anything collection: 'items', // the name of our collection }; const Base = mongoose.model('Base', new mongoose.Schema({ title: { type: String, required: true }, date_added: { type: Date, required: true }, redo: { type: Boolean, required: false }, }, baseOptions, ), ); module.exports = mongoose.model('Base'); > models/book.js const Base = require('./base'); // we have to make sure our Book schema is aware of the Base schema const Book = Base.discriminator('Book', new mongoose.Schema({ author: { type: String, required: true }, }), ); module.exports = mongoose.model('Book'); > models/movie.js const Base = require('./base'); const Movie = Base.discriminator('Movie', new mongoose.Schema({ director: { type: String, required: true }, }), ); module.exports = mongoose.moel('Movie'); > {app_root}/app/model/base.js module.exports = app => { const mOngoose= app.mongoose; const Schema = mongoose.Schema; const baseOptiOns= { discriminatorKey: 'itemtype', // our discriminator key, could be anything collection: 'items', // the name of our collection }; const BaseScheme = new Schema({ title: { type: String, required: true }, date_added: { type: Date, required: true }, redo: { type: Boolean, required: false }, }, baseOptions); return mongoose.model('Base', BaseScheme); }; > {app_root}/app/model/book.js const Base = require('./base'); module.exports = app => { const mOngoose= app.mongoose; const Schema = mongoose.Schema; const BookSchema = new Schema({ author: { type: String, required: true }, }); return Base.discriminator('Book', BookSchema); }; ERROR 30161 nodejs.TypeError: Base.discriminator is not a function 上面例子的代码源自 Getting started with Mongoose discriminators in Express.js