mongoseのschemaの継承
このブログを書くのは私が望んでいる開発状況が実現されたので、共有することを提案して、mongoseのschema多重機能、2つの状況が解決することができます.
第一に、共通体は基本データオブジェクトグループとして作成され、継承され、依存パッケージをインストールする必要があります.もちろん、jqueryのextendも使用できます.
次のコードを使用します.
第二に、すべてのフィールドを融合させ、格納時に必要に応じて要求されたフィールドに格納する方法は、フィールドに値を割り当てずに空にすれば達成できますが、一部のフィールドがデフォルト値を設定する場合は不便で、常にライブラリに格納されます.
第一に、共通体は基本データオブジェクトグループとして作成され、継承され、依存パッケージをインストールする必要があります.もちろん、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
});
第二に、すべてのフィールドを融合させ、格納時に必要に応じて要求されたフィールドに格納する方法は、フィールドに値を割り当てずに空にすれば達成できますが、一部のフィールドがデフォルト値を設定する場合は不便で、常にライブラリに格納されます.