koa-router 路由配置和mongdb 连接和操作(二)

koa-router 配置

一、安装koa-router

koa-router文档地址 https://www.npmjs.com/package/koa-router

yarn add koa-router --save

二、使用步骤

1.引入库

/启动路由/

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;
}

2.接口设计

在这里插入图片描述

采用MVC的思想

1、controller

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
    }
}

2、service

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;
}

3、dao

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);
        })
    })
}

3.连接mongdb

1.连接服务

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

2.dao 中连接实体model

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 ,其他文章有记录,初步效果如下(算是练习和兴趣):
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值