koa-router文档地址 https://www.npmjs.com/package/koa-router
yarn add koa-router --save
/启动路由/
const router = require('./routes/router')()
// routes
app.use(router.routes(), router.allowedMethods())
/*
* router.allowedMethods()作用: 这是官方文档的推荐用法,我们可以
* 看到 router.allowedMethods()用在了路由匹配 router.routes()之后,所以在当所有
* 路由中间件最后调用.此时根据 ctx.status 设置 response 响应头
*
*/
1.封装的router
const Router = require("koa-router");
const User = require("../app/controller/userController")
const Project = require("../app/controller/projectController")
const Interface = require("../app/controller/interfaceController")
module.exports = function(){
let router = new Router({
prefix:'/mcms'
})
//user
router.get('/user/add',User.signup);
//project
router.get('/project/qryAll',Project.qryAll);
router.post('/project/addProject',Project.addProject);
router.post('/project/updateProject',Project.updateProject);
router.get('/project/qryProject',Project.qryProject);
router.get('/interface/qryAll',Interface.qryAll);
router.get('/interface/qryInterface',Interface.qryInterface);
router.post('/interface/addInterface',Interface.addInterface);
router.post('/interface/updateInterface',Interface.updateInterface);
router.get('/interface/qryParam',Interface.qryInterfaceParam);
return router;
}
采用MVC的思想
const ProjectService = require('../service/projectService')
exports.qryAll = async(ctx,next) =>{
let project = await ProjectService.findAllPorject();
ctx.body = project;
}
exports.addProject = async(ctx,next) =>{
let data = ctx.request.body.data;
let res = await ProjectService.addProject(data);
console.log(res);
ctx.body={
code:0
}
}
const ProjectDao = require("../dao/projectDao")
exports.findAllPorject = async() =>{
let project = ProjectDao.findProjectAll();
return project;
}
exports.addProject = async(data) =>{
let dataJson = JSON.parse(data);
let project = ProjectDao.save(dataJson);
return project;
}
const Project = require("../../model/project")
exports.findProjectAll = async () =>{
let query = Project.find({});
return new Promise(function(resolve,reject){
query.exec(function(err,data){
if(err) return reject(err);
resolve(data);
})
})
}
exports.save = async(obj) =>{
const project = new Project(obj);
return new Promise((resolve,reject)=>{
project.save((err,res)=>{
if(err){
reject(err)
}
resolve(res);
})
})
}
require("./config/db")
const mongoose = require('mongoose')
const db = 'mongodb://192.168.1.110:27017/mcms'
mongoose.connect(db,{ useNewUrlParser: true,useUnifiedTopology:true });
/**
* 连接正常 connected
*/
mongoose.connection.on('connected',function() {
console.log('Mongoose connection open to ');
});
/**
* 连接异常 error 数据库连接错误
*/
mongoose.connection.on('error',function(err) {
console.log('Mongoose connection error: '+ err);
});
/**
* 连接断开 disconnected 连接异常断开
*/
mongoose.connection.on('disconnected',function() {
console.log('Mongoose connection disconnected');
});
module.exports = mongoose
const mongoose = require('mongoose')
const Schema = mongoose.Schema;
const ProjectSchema = new Schema({
name:String,
nickName:String,
startTime:Date,
desc:String
},{
collection:'project'
});
let Project = mongoose.model('project',ProjectSchema);
module.exports = Project;
这里只是介绍的koa + mongdb 的后台配置,前端展示使用的electron + vue ,其他文章有记录,初步效果如下(算是练习和兴趣):