Egg(四):Egg.js使用MySql数据库

前言

Egg中配合使用mysql来实现数据的获取和写入,并通过Egg定义的方式发送到接口里面。

一、项目中安装mysql

1、安装egg-mysql插件

npm i --save egg-mysql

2、配置插件:打开config/plugin.js

// mysql配置
module.exports = {
  mysql: {
    enable: true,
    package: 'egg-mysql',
  },
};

3、配置插件:打开config/config.default.js

 // 数据库连接
 exports.mysql = {
   // 单数据库信息配置
   client: {
      // host
      host: 'localhost',
      // 端口号
      port: '3306',
      // 用户名
      user: 'root',	
      // 密码
      password: '123456',
      // 数据库名
      database: 'egg',
  },
   // 是否加载到 app 上,默认开启
   app: true,
   // 是否加载到 agent 上,默认关闭
   agent: false,
 };

二、Egg.js 操作 MySql 数据库

1、新建一个stu数据库表

CREATE TABLE `stu` (  
 `id` int(11) NOT NULL AUTO_INCREMENT, 
 `name` varchar(10) NOT NULL,   
 `age` int(11) NOT NULL,  
 PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

2、添加路由 router.js

router.get('/getStu', controller.stu.getStu);
 router.post('/addStu', controller.stu.addStu);
 router.post('/updateStu', controller.stu.updateStu);
 router.post('/delStu', controller.stu.delStu);

3、添加学生信息

1、打开controller 中的stu.js

// 添加学生信息
 async addStu() {
     const { ctx } = this;
     const { name, age } = ctx.request.body;
     const result = await ctx.service.stu.addStu(name, age);
     if (result) {
        ctx.body = {
          status: 200,
          msg: '添加成功',
          data: {},
        };
    } else {
        ctx.body = {
          status: 201,
          msg: '添加失败',
          data: {},
      };
    }
 }

2、打开service中的stu.js

/**
   * 添加学生信息
   * @param {*} name -名称
   * @param {*} age -年龄
   * @return {Object} 对象
 */
async addStu(name, age) {
 try {
    const params = {
       name,
       age,
    };
    const result = await this.app.mysql.insert('stu', params);
    const insertSuccess = result.affectedRows === 1;
    if (insertSuccess) {
      return result;
    }
    return null;
  } catch (error) {
      console.log(error);
  }
}

调用接口如下图
在这里插入图片描述
·我们可以在数据库的表中查看到
在这里插入图片描述

4、根据ID查寻学生信息

1、打开controller 中的stu.js

 // 查询学生信息
 async getStu() {
    const { ctx } = this;
    const { id } = ctx.query;
    const result = await ctx.service.stu.getStu(id);
    ctx.body = {
      status: 200,
      msg: '查询成功',
      data: result,
    };
 }

2、打开service中的stu.js

/**
   * 查询学生信息
   * @param {*} id -学生ID
   * @return {Object} 学生信息
*/
 async getStu(id) {
   try {
     const params = {
        id
     };
     const result = await this.app.mysql.get('stu', params);
     return result;
    } catch (error) {
      console.log(error);
   }
 }

调用接口如下图
在这里插入图片描述

5、根据ID更新学生信息

1、打开controller 中的stu.js

// 更新学生信息
 async updateStu() {
   const { ctx } = this;
   const params = ctx.request.body;
   const result = await ctx.service.stu.updateStu(params);
   if (result) {
       ctx.body = {
        status: 200,
        msg: '更新成功',
        data: result,
       };
    } else {
       ctx.body = {
         status: 201,
         msg: '更新失败',
         data: {},
      };
    }
 }

2、打开service中的stu.js

/**
   * 更新学生信息
   * @param {*} params 学生信息
   * @return {Object} 对象
*/
 async updateStu(params) {
    try {
     const result = await this.app.mysql.update('stu', params); 
     const updateSuccess = result.affectedRows === 1;
     if (updateSuccess) {
       return result;
     }
      return null;
    } catch (error) {
      console.log(error);
    }
 }

调用接口如下图
在这里插入图片描述
我们可以在数据库的表看到数据已经更新啦
在这里插入图片描述

6、根据ID删除学生信息

1、打开controller 中的stu.js

 // 删除学生信息
 async delStu() {
    const { ctx } = this;
    const { id } = ctx.request.body;
    const result = await ctx.service.stu.delStu(id);
    if (result) {
       ctx.body = {
          status: 200,
          msg: '删除成功',
          data: {},
      };
    } else {
       ctx.body = {
         status: 201,
         msg: '删除失败',
         data: {},
      };
    }
  }

2、打开service中的stu.js

/**
   * 删除学生信息
   * @param {*} id  学生ID
   * @return {Object} 对象
*/
 async delStu(id) {
    try {
        const result = await this.app.mysql.delete('stu', {
          id,
        });
       return result;
    } catch (error) {
      console.log(error);
    }
 }

调用接口如下图
在这里插入图片描述

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值