nodejs Controller层 封装
2016-06-09 23:31
387 查看
作者:短工邦技术部 - 陈文哲封装了MODEL层后,我们要操作哪张表,就定义对应的MODEL变量出来就行了。但还是很麻烦,一个业务可能要操作多张表…有没有办法定义一个db变量,我想怎么操作数据就怎么操作数据?抛开安全性等,答案是有的,而且比较简单。
先看下封装后的目录结构MODEL
BaseMODEL.js
UserMODEL.js
Controller
oData.js
NormalController.js
rount.js
先看下封装后的目录结构MODEL
BaseMODEL.js
UserMODEL.js
Controller
oData.js
NormalController.js
rount.js
BaseMODEL.js
exports.statics = { 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(); return this.update({_id:query._id},query.data).exec(data); } };
UserMODEL.js
var Schema = require('mongoose').Schema; var MODEL = Schema({ UserName: String, Password: String createdAt:{ type:Date, default:Date.now() }, updatedAt:{ type:Date, default:Date.now() } }, {collection: "User"}); //定义该MODEL的能提供的数据操作 var BaseMODEL = require("./BaseMODEL"); MODEL.statics = BaseMODEL.statics; /* global db */ module.exports = db.model('UserMODEL', MODEL);
oData.js
exports.find = function(inputData,callback){ var MODEL; if(inputData.table == "User"){ MODEL = require("../MODEL/UserMODEL"); } //else if 控制可以操作哪些表 if(MODEL){ MODEL.Find({ "where":inputData.where, "include":inputData.include, "limit":inputData.limit, "skip":inputData.skip },function(err,data){ //回调 callback(err,data) }); } }
NormalController.js
var db = require("./oData"); exports.index = function(req, res) { db.find({ "table":"User", "where":{ "Type":"Admin" } },function(err,data){ console.log(data); //还可以继续操作 db.find({ "table":"User", "where":{ "Type":"User" } },function(err,data){ console.log(data); //还可以继续操作 res.render('index',data); }); }); }现在写业务是不是简单多了?但还能不能继续扩展?赶紧扩展下去可以变成一个框架了的样子……
相关文章推荐
- [Nutch]Hadoop动态删除DataNode节点和TaskTracker节点
- [Nutch]Hadoop动态增加DataNode节点和TaskTracker节点
- leetcode 19. Remove Nth Node From End of List
- Node.js、Sublime text3便携设置/自定义npm、packages文件夹位置
- 19. Remove Nth Node From End of List
- Node.js中npm常用命令大全
- TraceGL监控Node.js应用或者浏览器JavaScript代码
- nodejs express 允许跨域访问(Access-Control-Allow-Origin)
- leetcode-Delete Node in a Linked List-237
- Leet Code 24 Swap Nodes in Pairs - 成对交换节点 - Java
- Leet Code 25 Reverse Nodes in k-Group - Java
- Ionic环境配置学习中
- node.js 入门(一)安装
- nodejs从零开始--菜鸟爬坑之旅
- node express安装
- NodeJS 学习记录
- Ubuntu扩容
- 24. Swap Nodes in Pairs
- node回调函数
- node to traverse cannot be null!