nodejs MODEL层 封装(二)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wowkk/article/details/51605775

作者:短工邦技术部 - 陈文哲

经过《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);

猜你喜欢

转载自blog.csdn.net/wowkk/article/details/51605775