本文主要学习一下 Egg.js 通过 egg-mysql 插件,如何操作数据库。我们讲过操作数据库的过程应该都在service
里进行。
学习前的准备页面和相关方法
在/service
文件夹下面,新建一个文件testdb.js
文件,专门用于操作数据库。在文件中编写下面的方法。方法分别代表增、删、改、查。
"use strict"; const Service = require("egg").Service; class testdbService extends Service { // 添加数据库 async addGirl() {} // 删除数据库 async delGirl() {} // 修改数据库 async updateGirl() {} // 查询数据库 async getGirls(id) {} } module.exports = testdbService;
写完之后在/controller
文件夹下面新增一个控制器 girlsManage.js 文件,是对女孩的管理。
"use strict"; const Controller = require("egg").Controller; class GirlManage extends Controller { async addGirl() { const { ctx } = this; ctx.body = "添加女孩"; } async delGirl() { const { ctx } = this; ctx.body = "删除女孩"; } async updateGirl() { const { ctx } = this; ctx.body = "修改女孩"; } async getGirls() { const { ctx } = this; ctx.body = "查询女孩"; } } module.exports = GirlManage;
配置相关路由,这里我们全部使用get
请求方式,在router.js
文件下加入下面的代码。
router.get("/addGirl", controller.girlManage.addGirl); router.get("/delGirl", controller.girlManage.delGirl); router.get("/updateGirl", controller.girlManage.updateGirl); router.get("/getGirls", controller.girlManage.getGirls);
然后打开终端,开启服务,然后打开浏览器,输入地址,查看写的方法是否可用http://127.0.0.1:7001/addGirl
。
查询方法的编写
我们先来学习一个最简单的方法,就是查询方法。进入/servic/testdb.js
文件下的getGirls()
方法。然后编写代码。
// 查询数据库 async getGirl(id){ try{ const app = this.app; const res= await app.mysql.select('girls'); return res }catch(error){ console.log(error); return null; } }
写完代码以后,再编写/controller/girlManage.js
文件下的getGirls()
方法。
async getGirls() { const { ctx } = this; const res = await ctx.service.testdb.getGirl(); ctx.body = '查询女孩:'+JSON.stringify(res); }
添加数据操作
打开/app/service/testdb.js
文件,在addGirl()
方法下,编写下面的代码。这里插入使用的insert()
方法。
// 添加数据库 async addGirl(params){ try { const { app } = this; const res = await app.mysql.insert('girls',params); return res; } catch (error) { console.log(error); return null; } }
insert( )
方法接收两个参数,第一个参数是表名称,第二个参数是插入到表里的值。
然后再到/app/controller/girlManage.js
文件里addGirl()
方法里编写代码。
async addGirl() { const { ctx } = this; const params = { name:'小白', age:18, skill:'头疗' } const res = await ctx.service.testdb.addGirl(params); ctx.body = '添加女孩-成功!'; }
写完之后打开终端,运行npm run dev
开启服务,然后在浏览器中输入http://127.0.0.1/addGirl
就可以看到结果了。再打开Navicat for MySQL
查看数据表的内容。如果没有任何错误,应该是可以顺利添加成功的。
修改数据操作
学会了添加,我们再来看一下如何来修改数据。打开/app/service/testdb.js
文件,在updateGirl()
方法中编写代码。
// 修改数据库 async updateGirl(params){ try { const { app } = this; const res= await app.mysql.update('girls',params); return res; } catch (error) { console.log(error); return null; } }
然后再到/app/controller/girlManage.js
文件中的updateGirl()
方法中。编写代码如下:
async updateGirl() { const { ctx } = this; const params = { id:3, name:'小白', age:20, skill:'头疗' } const res = await ctx.service.testdb.updateGirl(params); if(res){ ctx.body = '修改女孩-成功'; }else{ ctx.body = '修改失败'; } }
写完以后,就可以到浏览器中访问http://127.0.0.1/updateGirl
。
删除数据操作
最后我们再看一下如何删除数据。还是到/app/service/testdb.js
文件下的delGirl()
方法。编写下面的代码:
// 删除数据库 async delGirl(id){ try { const { app } = this; const res = await app.mysql.delete('girls',id); return res; } catch (error) { console.log(error); return null; } }
然后再到controller
里边,进行编写delGirl()
方法。
async delGirl() { const { ctx } = this; const id={"id":3}; const res = await ctx.service.testdb.delGirl(id); console.log(res); if(res){ ctx.body = '删除女孩-成功'; }else{ ctx.body = '删除失败'; } }
写好后,我们到浏览器里访问http://127.0.0.1/delGirl
就可以了。
以上就是我们对数据库进行增删改查操作了。
到此为止,这就是本套 Egg.js 教程的全部内容了,当然这只是基础教程,以后我还会用 Egg.js 作为后台代码,Vue 作为前端代码,做一个博客系统,请你持续关注前端教程。