简单实现 nodejs koa2 mysql 增删改查 制作接口
阅读原文时间:2023年07月08日阅读:2

1.首先 在电脑上安装 nodejs (此处略过)

2.全局安装 koa2 (这里使用的淘宝镜像cnpm,有兴趣的同学可以自行搜索下)

cnpm install koa-generator -g

3.创建项目

koa2 code(code 是项目名)

4.(cd code) 然后 安装依赖

cnpm install

5.(cd code  进入code目录 ) 然后 启动项目

cnpm start code 该操作修改代码后,需重启生效

cnpm run dev 该操作修改代码后,刷新浏览器生效

6. node 连接数据库

cnpm install mysql --save

7.1 开始增删改查     目录结构

db.js 是数据库的配置
代码如下:

//数据库配置文件
const MYSQL_CONFIG = {
host : '你的数据库地址', // 可以是本地地址,也可以设置成远程地址
user : '你的数据库账户', // 我这边是mysql,一般都是root
password : '你的数据库密码',
database : '你连接的数据库名'
};
module.exports = MYSQL_CONFIG;

dbSQL.js 里面是sql语句
代码如下:

const QUERY_SQL = `select * from t_user`;
const INSERT_SQL = `INSERT INTO t_user SET ?`;
const UPDATE_SQL = `UPDATE t_user SET username=? WHERE id=?`;
const DELETE_SQL = `DELETE FROM t_user WHERE id=?`;

module.exports = { QUERY_SQL, INSERT_SQL, UPDATE_SQL, DELETE_SQL };

dbPool.js 里面是创建连接池,并编写查询方法
代码如下:

const mysql = require('mysql')
const MYSQL_CONFIG = require('./db');

let pools = {};

// 创建连接池
//判断是否存在连接池不用每次都创建
if (!pools.hasOwnProperty('data')) {
pools['data'] = mysql.createPool(MYSQL_CONFIG);
}

// 查询
// sql 是sql语句
// values 是sql语句中的具体值
// sql values 可查看官方文档 https://github.com/mysqljs/mysql#performing-queries
const query = (sql, values) => {
return new Promise((resolve, reject) => {
//初始化连接池
pools['data'].getConnection((err, connection) => {
if (err) {
console.log(err,'数据库连接失败');
}
else{
console.log('数据库连接成功');
//操作数据库
connection.query(sql, values, (err, results) => {
if (err) {
reject(err);
} else {
connection.release();
resolve({
status: 200,
results
});
}
});
}
})
});
}

module.exports = { query };

dataOperation.js 是数据库的增删改查操作,目前是放在router里面的,最好是分离出来,方便维护
代码如下:

const router = require('koa-router')()
const { query } = require('./../config/dbPool');
const { QUERY_SQL, INSERT_SQL, UPDATE_SQL, DELETE_SQL } = require('./../config/dbSQL');

//查询
// 测试时可简单创建 string: name, number: id, 自增主键id
router.get('/search', async ctx => {
const data = await query(QUERY_SQL);
ctx.body = {
data,
};
});

// 插入
router.post('/save', async ctx => {
const res = ctx.request.body;
const { username = '', realname = '', password = '' } = res;
if(username && realname) {
const queryData = {
username,
realname,
password,
};
const data = await query(INSERT_SQL, queryData);
if(data && data.status && data.status === 200) {
ctx.body = {
status: 200,
msg: "操作成功",
};
} else {
ctx.body = data;
}
}
});

//更新
router.post('/update', async ctx => {
const res = ctx.request.body;
const { username = '', id= 1 } = res;
if(username && id) {
const queryData = [username, id];
const data = await query(UPDATE_SQL, queryData);
if(data && data.status && data.status === 200) {
ctx.body = {
status: 200,
msg: "操作成功",
};
} else {
ctx.body = data;
}
}
});

//根据主键id 删除
router.del('/delete', async ctx => {
const res = ctx.request.body;
const { id } = res;
if(id) {
const queryData = [id];
const data = await query(DELETE_SQL, queryData);
if(data && data.status && data.status === 200) {
ctx.body = {
status: 200,
msg: "操作成功",
};
} else {
ctx.body = data;
}
}
});

module.exports = router;

接下来是测试接口  这里使用的是postman

查询

新增

修改

删除

接口制作完成 之后 ,要部署到腾讯云服务器 可以参考我这篇文章:

把 nodejs koa2 制作的后台接口 部署到 腾讯云服务器