egg(五):egg中操作mysql以及egg来提供get/post/put/delete接口

前言:

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

目录:

官方入口(egg+mysql):点我

一、项目中安装mysql

1、安装:

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

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

 4、使用方式:具体使用看下面

二、页面上定义get请求接收mysql的数据

1、路由中加入,  router.js或者router.local.js

2、user.js中定义 getUserList  方法,

select * from user  sql查询语句 ,获取user表的所有数据

3、页面上打开  http://localhost:7001/getUserList

 三、页面上定义post请求新增mysql的数据

1、路由中加入,  router.js或者router.local.js

2、user.js中定义 postUserList方法,

sql语句:

 let insertResult = await this.app.mysql.insert(      'user', { 你的表里对应的字段 }    );

3、如果报错missing csrf token ,点我

4、postman中请求:http://localhost:7001/postUserList

四:jsonp请求(摘取)

更多资料:操作数据库(摘取)


官方入口(egg+mysql):点我

一、项目中安装mysql

1、安装:

cnpm i --save egg-mysql

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

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

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

// 配置MySQL数据库的连接
  exports.mysql = {
    client: {
      // ip地址,本机就localhost
      host: 'localhost',
      // 端口-默认都是这个
      port: '3306',
      // 账号
      user: 'root',
      // 密码
      password: '123456',
      // 表名称
      database: 'xing'
    },
    // load into app, default is open
    app: true,
    // load into agent, default is close
    agent: false,
  };

 4、使用方式:具体使用看下面

await app.mysql.query(sql, values); // 单实例可以直接通过 app.mysql 访问

二、页面上定义get请求接收mysql的数据

1、路由中加入,  router.js或者router.local.js

app.get('/getUserList', controller.new.user.getUserList);

2、user.js中定义 getUserList  方法,

select * from user  sql查询语句 ,获取user表的所有数据

/**
 *  用户信息路由
 * @param app
 * @returns {HomeController}
 */
const Controller = require('egg').Controller;
class NewsController extends Controller {
  async getUserList() {
    //查询库里的user表
    let userList= await this.app.mysql.query(
      'select * from user'
    );
    console.log(this.ctx.query);//获取路径后面的参数
    this.ctx.body = {
      code:200,
      masg:'success',
      data:userList
    };
  }
  


}
module.exports = NewsController;

3、页面上打开  http://localhost:7001/getUserList

 三、页面上定义post请求新增mysql的数据

1、路由中加入,  router.js或者router.local.js

app.post('/postUserList', controller.new.user.postUserList);

2、user.js中定义 postUserList方法,

sql语句:

 let insertResult = await this.app.mysql.insert(
      'user', { 你的表里对应的字段 }
    );

/**
 *  用户信息路由
 * @param app
 * @returns {HomeController}
 */
const Controller = require('egg').Controller;
class NewsController extends Controller {
  async postUserList() {
    //新增数据-user表
    let data = {
      name:'张三',
      id:parseInt(Math.random()*100000),
      age:'34',
      address:'地址',
      email:'34',
      phone:'13519102731'
    }
    let insertResult = await this.app.mysql.insert(
      'user', data
    );
    this.ctx.body = {
      code:200,
      masg:'success',
      data:insertResult
    };
  }



}
module.exports = NewsController;

3、如果报错missing csrf token ,点我

4、postman中请求:http://localhost:7001/postUserList

四:jsonp请求(摘取

//app/router.js
module.exports = app => {
   const { router, controller } = app; 
   router.get('/',controller.home.index);
   router.get('/list',controller.news.list);
   router.post('/form',controller.form.post);
   router.get('/demo/count.json',app.jsonp(),controller.demo.count);
}
// app/demo/count.json
{
    "errcode":"0",
    "msg":"success",
    "data":[
        {
            "id":1,
            "title":"hello"
        },
        {
            "id":2,
            "title":"world"
        }
    ]
}
// app/controller/demo.js
const Controller = require('egg').Controller;
class DemoJsonp extends Controller{
    async count(){
        this.ctx.body = {
            data:[
                {
                    "id":1,
                    "title":"hello"
                },
                {
                    "id":2,
                    "title":"world"
                }
            ]
        };
    }
}
module.exports = DemoJsonp;

其实我们这里并没有跨域,只是类比一下,跟get其实一样。

更多资料:操作数据库(摘取

'use strict';
 
const Controller = require('egg').Controller;
 
class UserController extends Controller {
    async index() {
 
        // 1.查询一条数据,不管条件是什么,只能查一条
        let getResult = await this.app.mysql.get(
            'user', { "id": 3 }
        );
 
        // 2.查询多条数据
        let selectResult = await this.app.mysql.select(
            'user', { limit: 10, orders: [['id', 'desc']] }
        );
 
 
        // 3.通过SQL语句查询数据
        let queryResult= await this.app.mysql.query(
            'select * from user'
        );
 
        // 4.通过SQL语句查询数据,查询条件为用户ID
        let user_id=3;
        let queryResultById= await this.app.mysql.query(
            'select * from user where id=?',[user_id]
        );
 
 
        // 5.增加数据
        let insertResult = await this.app.mysql.insert(
            'user', { username: 'admin', 'password': '123456' }
        );
 
        // 6.根据主键修改数据
        let userInfo = {
            id: 24,
            username: '二麻子'
        };
        let updateResultById = await this.app.mysql.update('user', userInfo);
 
 
        // 7.执行SQL语句来修改数据,条件为密码等于666666
        let updateResultBySQL= await this.app.mysql.query(
            'update user set username=? where password=?',['李四','666666']
        );
 
        // 8. 按指定的用户ID删除数据
        let deleteResult = await this.app.mysql.delete(
            'user', {id: '25'}
        );
 
        this.ctx.body = '操作成功';
 
    }
}
 
module.exports = UserController;

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值