写这篇博文是我想要的开发情况得到了实现,提出来分享下,mongoose的schema复用功能,有两种情况可以解决。
第一,公用体写成基本数据对象组,然后继承,需要安装一个依赖包,当然也可以使用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
});
第二,把所有的字段融合到一起,存储时根据需要给请求哪些字段需要存入,这种方法就是不给字段赋值,让其为空,就可以达到,但是如果某些字段要设置默认值的时候恐怕就不方便了,总是会存入库中去。