nodejs MODEL层 封装(二)
2016-05-16 20:38
453 查看
作者:短工邦技术部 - 陈文哲
经过《nodejs MODEL层 封装(一)》的封装,MODEL层变得简洁了,但是所有MODEL层的方法都一样,所以显而易见的,下一步封装就是把所有相同的代码封装到BaseMODEL,然后自定义的MODEL“继承”自BaseMODEL就行了。
在MODEL目录下,新建BaseMODEL.js,代码如下
然后MODEL层代码就可以改装了
经过《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);
相关文章推荐
- PostgreSQL教程(三):表的继承和分区表详解
- 使用ruby部署工具mina快速部署nodejs应用教程
- Lua面向对象之类和继承浅析
- 浅析Ruby中继承和消息的相关知识
- 设计引导--一个鸭子游戏引发的设计理念(多态,继承,抽象,接口,策略者模式)
- Google官方支持的NodeJS访问API,提供后台登录授权
- 浅谈Nodejs观察者模式
- nodejs教程之环境安装及运行
- nodejs中的fiber(纤程)库详解
- 基于NodeJS的前后端分离的思考与实践(五)多终端适配
- 基于NodeJS的前后端分离的思考与实践(二)模版探索
- 实例详解Nodejs 保存 payload 发送过来的文件
- 我的NodeJs学习小结(一)
- Node.js 应用跑得更快 10 个技巧
- nodejs中实现sleep功能实例
- Nodejs异步回调的优雅处理方法
- C++实现不能被继承的类实例分析
- C# 面向对象三大特性:封装、继承、多态
- Windows系统下使用Sublime搭建nodejs环境
- nodejs实现获取某宝商品分类