mongoseのschemaの継承


このブログを書くのは私が望んでいる開発状況が実現されたので、共有することを提案して、mongoseのschema多重機能、2つの状況が解決することができます.
第一に、共通体は基本データオブジェクトグループとして作成され、継承され、依存パッケージをインストールする必要があります.もちろん、jqueryのextendも使用できます.
npm install mongoose-schema-extend

次のコードを使用します.
var mongoose = require('../libs/mongo'),
    Schema = mongoose.Schema,
    extend = require('mongoose-schema-extend');

var Item = new Schema({
    userid: Number,
    remarke: String
}, {_id: false});

var GroupItem = Item.extend({
    manager: Number
})

//      
var BaseGroup = new Schema({
    name: String,
    groupid: {type: Number,unique:true, index: 1},
    type:String,
    topid:Number,//userid,companyid,etc.
    icon: String,
    number: [GroupItem],
    createat: {type: Date, default: Date.now},
    maxuser: {type: Number, default: 1000},
    verify: Boolean,
    notice: String
}, {collection: 'groups', versionKey:false});
//       ,       
var ChannelGroup = BaseGroup.extend({
    Group:Schema.Types.Mixed,
    channeltype: String,
    channelname: String
});
//       
var Group = BaseGroup.extend({
    classify:String
});

第二に、すべてのフィールドを融合させ、格納時に必要に応じて要求されたフィールドに格納する方法は、フィールドに値を割り当てずに空にすれば達成できますが、一部のフィールドがデフォルト値を設定する場合は不便で、常にライブラリに格納されます.