原因
最近要起个新项目,需求还没到,先着手做些准备工作,撸了一个服务器大概的框架
传送门
https://github.com/CarlosRen/simple
文件结构
思考
- 提供pool和orm两种方式操作数据库
- 采用 promise + async/await 减少回调
- 使用jwt作为认证手段
- 单独建立了一个测试脚本文件夹,对交付结果负责,不单单是一个参数文档
- 配置文件分离到config.js 方便上线
service的代码
// service/person.js
var database = require('../base/orm');
var log = require('../base/logger');
let person = {};
function linker(db){
return new Promise(function(resolve,reject){
db.sync(function(err){
if(err){
reject(err);
}else{
resolve();
}
})
});
}
function finder(db,condition){
return new Promise(function(resolve,reject){
if(!condition){
condition = {}
}
db.models.person.find(condition,function(err,rows){
if(err){
reject(err);
}else{
resolve(rows);
}
})
})
}
function creater(person,db){
if(!person){
return Promise.reject("person can't be null");
}
return new Promise(function(resolve,reject){
db.models.person.create(person,function(err,rows){
if(err){
reject(err);
}else{
resolve(rows);
}
});
});
}
async function create(person){
let db,results,link,find,create;
db = await database;
link = linker(db);
find = finder(db,{name:person.name});
create = creater(person,db);
results = await link.then(function(){
return find;
}).then(function(data){
if(data){
//输出已经存在
return Promise.reject('data is exist');
}else{
return create;
};
}).then(function(rows){
return { error : null , data : rows , msg : "ok"};;
}).catch(function(e){
log.error("error in create service person :" + e );
return { error : true , data : null , msg : e};
});
return results;
}
person.create = create;
module.exports = person;
// routes/api.js
router.post('/person',function(req,res,next){
async function getdata(){
result = await person.create({
name : "chao",
surname : "fabulous",
age : 18,
male : true,
continent:"Europe",
data : null
});
res.json({
success:!result.error ,
msg:result.msg,
data:result.data
});
}
getdata();
});
关于项目
- 欢迎各种argue
- 想把它做成一个可以被拿来主义的服务器原型
- 个人思考有限,再扩展可能就是用socket.io封装一个im接口,还有就是有个邮件服务,别的功能没啥想法,欢迎提出更好的建议
- 感觉还可以有优化的地方,欢迎大家提issue ,更欢迎star
- 无论您持什么样的态度 , 请您和谐的表达您的观点