一、拦截器
在项目中,前台获取数据时,需要前台提供token信息,后台验证才可以获取数据,验证代码如下。
1 // 在router中请求中使用中间件
4 router.get('/getclazz', app.middleware.checktoken(),controller.clazz.get);
5
6 // app/milldeware/checktoken.js
8 // 检验前台的请求头中是否存在token
9 module.exports = () => {
10 return async function (ctx, next) {
11 if (ctx.request.header['token']) {
12 await next();
13 } else {
14 ctx.status = 401;
15 ctx.body = {
16 message: '没有token'
17 }
18 return;
19 }
20 }
21 };
二、后台生成token
在登录时,后台需要生成token返回给前端,生成token代码如下:
const token = this.app.jwt.sign({ username:username }, this.app.config.jwt.secret);
三、查询数据
1 // 联查表中的数据
2 const studentList = awathis.app.model.Students.findAll({
3 include: [{
4 model: this.app.model.Clazz,
5 as: 'clazz'
6 }]
7 });
四、增加数据
在前端完成增加班级或学生的时候,后台要接受前端的数据,并将它传到数据库里面,具体代码如下所示:
1 // 获取前端传的页面
2 let name = this.ctx.request.body.name;
3 const clazz = {
4 clazzname: name
5 }
6 //添加至数据库
7 await this.app.model.Clazz.creat(clazz);
五、删除数据
前端在完成删除的时候,后台需要删除对应id的数据库里面的数据,再传给前端,删除代码如下:
1 // 获取对应的id
2 let id = this.ctx.params.id
3 // 查询需要删除的学生名
4 const student = awaithis.app.model.Students.findOne({
5 where: {
6 id: id
7 }
8 })
9 // 删除
10 student.destroy()
六、修改数据
前端执行修改点击时,后台需要获取前端对应的id以及修改的信息,修改后传到数据库里,再返回给前端,代码如下所示:
1 // 获取对应的id
2 let id = this.ctx.params.id
3 // 获取需要修改的值
4 let putclazzname = this.ctx.request.body.putclazzname
5 // 修改值
6 let row = {
7 clazzname: putclazzname
8 },
9 options = {
10 where: {
11 id: id
12 }
13 }
14 // 返回给数据库
15 await this.app.model.Clazz.update(row, options);