您的位置:首页 > Web前端 > Node.js

nodejs MODEL层 封装(二)

2016-05-16 20:38 453 查看
作者:短工邦技术部 - 陈文哲

经过《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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  nodejs 继承