MySQL安装成功后,在egg项目中安装egg-mysql插件,配置完成后,编写查询、新增、删除、编辑接口。
一、安装MySQL
版本选择MySQL 8.0.20 Mac Intel 版本
安装过程设置密码:0987654321
此时在terminal输入命令:
Commod not found
1、termina进入 路径:/usr/local/mysql/bin 查看目录是否有mysql
如果存在,在此路径下执行:vim ~/.bash_profile
打开后,输入 i 键,进入编辑,在.bash_profile中添加mysql/bin的目录,完成后,ESC退出编辑,输入:wq回车保存
1
| PATH=$PATH:/usr/local/mysql/bin
|
2、输入source ~/.bash_profile 使配置生效
3、指令登录数据库:mysql -u root -p 输入密码:0987654321
4、开启服务:mysql.server start
二、egg.js安装egg-mysql插件
1、安装egg-mysql及插件配置
config/plugin.js
1 2 3 4 5 6 7 8 9 10 11 12 13
| 'use strict';
module.exports = { ejs: { enable: true, package: 'egg-view-ejs' }, mysql: { enable: true, package: 'egg-mysql' } };
|
config/plugin-default.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| exports.mysql = { client: { host: 'localhost', port: '3306', user: 'root', password: '数据库密码', database: 'test', }, app: true, agent: false, };
|
2、修改 service/home.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| 'use strict';
const Service = require('egg').Service;
class HomeService extends Service { async user() { const { ctx, app } = this; const QUERY_STR = 'id, name'; let sql = `select ${QUERY_STR} from list`; try { const result = await app.mysql.query(sql); return result; } catch (error) { console.log(error); return null; } } } module.exports = HomeService;
|
3、修改controller/home.js中的user方法
1 2 3 4 5
| async user() { const { ctx } = this; const result = await ctx.service.home.user(); ctx.body = result }
|
4、路由配置
1
| router.get('/user', controller.home.user);
|
三、新增接口
在 service/home.js
下新建一个函数 addUser
1 2 3 4 5 6 7 8 9 10 11
| async addUser(name) { const { ctx, app } = this; try { const result = await app.mysql.insert('list', { name }); return result; } catch (error) { console.log(error); return null; } }
|
再为 controller/home.js
添加一个 addUser
方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| async addUser() { const { ctx } = this; const { name } = ctx.request.body; try { const result = await ctx.service.home.addUser(name); ctx.body = { code: 200, msg: '添加成功', data: null } } catch (error) { ctx.body = { code: 500, msg: '添加失败', data: null } } }
|
配置路由
1
| router.post('/add_user', controller.home.addUser);
|
这个post请求需要使用postman测试接口是否成功。
四、编辑接口
通过 /user
拿到了列表数据,我们可以通过 id
定位某条数据,去修改它的 name
属性。
/service/home.js
,添加编辑操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| async editUser(id, name) { const { ctx, app } = this; try { let result = await app.mysql.update('list', { name }, { where: { id } }); return result; } catch (error) { console.log(error); return null; } }
|
/controller/home.js
添加如下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| async editUser() { const { ctx } = this; const { id, name } = ctx.request.body; try { const result = await ctx.service.home.editUser(id, name); ctx.body = { code: 200, msg: '添加成功', data: null } } catch (error) { ctx.body = { code: 500, msg: '添加失败', data: null } } }
|
配置路由:
1
| router.post('/edit_user', controller.home.editUser);
|
post请求需要使用postman工具测试接口
五、删除接口
在 /service/home.js
添加删除接口
1 2 3 4 5 6 7 8 9 10 11
| async deleteUser(id) { const { ctx, app } = this; try { let result = await app.mysql.delete('list', { id }); return result; } catch (error) { console.log(error); return null; } }
|
/controller/home.js
添加相应的控制器方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| async deleteUser() { const { ctx } = this; const { id } = ctx.request.body; try { const result = await ctx.service.home.deleteUser(id); ctx.body = { code: 200, msg: '删除成功', data: null } } catch (error) { ctx.body = { code: 500, msg: '删除失败', data: null } } }
|
添加相应路由:
1 2
| router.post('/delete_user', controller.home.deleteUser);
|