nodejs MODEL層 封裝(二)
阿新 • • 發佈:2019-02-19
作者:短工邦技術部 - 陳文哲
經過《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);