作者:短工邦技术部 - 陈文哲
经过《nodejs MODEL层 封装(一)》的封装,MODEL层变得简洁了,但是所有MODEL层的方法都一样,所以显而易见的,下一步封装就是把所有相同的代码封装到BaseMODEL,然后自定义的MODEL“继承”自BaseMODEL就行了。
在MODEL目录下,新建BaseMODEL.js,代码如下
exports.statics = {
//KeyValue是一个JSON对象,可以根据需求自由传入
findByKeyValue : function( KeyValue, data ) {
return this.find(KeyValue).exec( data );
},
Find : function( query, data ) {
if(!query.limit){
query.limit = 1000;
}
if(!query.order){
query.order = "-createdAt";
}
if(!query.include){
query.include = "";
}
return this.find(query.where).populate(query.include).limit(query.limit).sort(query.order).exec( data );
},
Update : function( query,data){
query.data.updatedAt = Date.now(); //所有更新操作,都更新系统updatedAt字段
return this.update({_id:query._id},query.data).exec(data);
}
};
然后MODEL层代码就可以改装了
var Schema = require('mongoose').Schema;
var MODEL = Schema({
Advertiser: {type:Schema.Types.ObjectId,ref:'UserMODEL'},
Name: String, //任务名称
Intro: String,
createdAt:{
type:Date,
default:Date.now()
},
updatedAt:{
type:Date,
default:Date.now()
}
}, {collection: "Plan"});
var BaseMODEL = require("./BaseMODEL");
MODEL.statics = BaseMODEL.statics;
/* global db */
module.exports = db.model('PlanMODEL', MODEL);