版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wowkk/article/details/51623196
作者:短工邦技术部 - 陈文哲
封装了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);
});
});
}
现在写业务是不是简单多了?但还能不能继续扩展?赶紧扩展下去可以变成一个框架了的样子……