koa2+mysql数据库增删改查

项目目录结构

在这里插入图片描述

1.初始化项目

项目初始化命令 npm init -y,自动生成一个package.json文件

2.链接数据库

创建db数据库文件夹,建立mysql.js

const mysql = require('mysql');

const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'xxx',
    database: 'zengshangaicha',
});

connection.connect(() => {
    console.log('数据库连接成功');
});

function exec(sql) {
    const promise = new Promise((resolve, reject) => {
        connection.query(sql, (err, res) => {
            if (err) {
                reject(err);
                return;
            }
            resolve(res);
        });
    });
    return promise;
}

module.exports = exec;

3.操作mysql数据库

建立controller文件夹,创建roles.js

const exec = require('../db/mysql');
// 查询
const list = async (role, limit, page) => {
    let sql = `select * from roles where 1=1`;
    if (role) {
        sql += ` and role='${role}'`;
    }
    sql += ` order by id desc`;
    // 分页查询
    if (limit && page) {
        sql += ` limit ${(page - 1) * 10},${limit}`;
    }

    const result = exec(sql);
    return result;
};

// 增加
const add = async (role, permissions) => {
    console.log(role, permissions);
    const sql = `insert into roles (role,permissions) values ('${role}','${permissions}')`;
    const result = exec(sql);
    return result;
};

// 修改
const upt = async (id, role, permissions) => {
    const sql = `update roles set role='${role}',permissions='${permissions}' where id='${id}'`;
    const result = exec(sql);
    return result;
};

// 删除
const del = async id => {
    const sql = `delete from roles where id='${id}'`;
    const result = exec(sql);
    return result;
};

module.exports = {
    list,
    add,
    upt,
    del,
};

4.实现路由

创建routes路由目录,创建router.js

const router = require('koa-router')();
const { list, add, upt, del } = require('../controller/roles');

router.prefix('/api/roles');

router.get('/list', async (ctx, next) => {
    const role = ctx.query.role;
    const limit = ctx.query.limit;
    const page = ctx.query.page;

    // if (!ctx.session.username) return;

    let data = await list(role, limit, page);
    // 获取总数量 total
    const data2 = await list();
    if (data.length == 0) {
        ctx.body = {
            code: 400,
            msg: '查询失败',
        };
        return;
    }
    data.forEach(ele => {
        ele.permissions = JSON.parse(ele.permissions);
    });
    ctx.body = {
        data,
        total: data2.lenght,
    };
});

router.post('/add', async (ctx, next) => {
    const { role, permissions } = ctx.request.body;
    // if (!ctx.session.username) return;
    const data = await add(role, permissions);
    if (data.affectedRows > 0) {
        ctx.body = {
            code: 200,
            msg: '添加成功',
            res: data,
        };
        return;
    }
});

router.post('/upt', async (ctx, next) => {
    const { id, role, permissions } = ctx.request.body;
    console.log(id, role, permissions);
    // if (!ctx.session.username) return;
    const data = await upt(id, role, permissions);
    if (data.affectedRows > 0) {
        ctx.body = {
            code: 200,
            msg: '更新成功',
        };
        return;
    }
});

router.post('/del', async (ctx, next) => {
    const { id } = ctx.request.body;
    console.log(id);
    // if (!ctx.session.username) return;
    const data = await del(id);
    if (data.affectedRows > 0) {
        ctx.body = {
            code: 200,
            msg: '删除成功',
        };
        return;
    }
});

module.exports = router;

5.注册路由服务

创建 app.jsÏ

  • 需要安装koa,koa-bodyparser,koa-router
  • 命令npm install koa koa-bodyparser koa-router --save
const Koa = require('koa');

const bodyParser = require('koa-bodyparser');

const app = new Koa();
const roles = require('./routes/router');

app.use(bodyParser());
app.use(roles.routes(), roles.allowedMethods());

app.listen(8080, () => {
    console.log('服务器启动了');
});

5.运行效果

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

小结

编辑不易,转载请注明出处。感谢赏阅,期待你的建议,点赞和关注。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值