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

nodejs Controller层 封装

2016-06-09 23:31 387 查看
作者:短工邦技术部 - 陈文哲封装了MODEL层后,我们要操作哪张表,就定义对应的MODEL变量出来就行了。但还是很麻烦,一个业务可能要操作多张表…有没有办法定义一个db变量,我想怎么操作数据就怎么操作数据?抛开安全性等,答案是有的,而且比较简单。
先看下封装后的目录结构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);
});
});
}
现在写业务是不是简单多了?但还能不能继续扩展?赶紧扩展下去可以变成一个框架了的样子……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: