Egg 中结合Egg-mysql操作MySQL

2020-11-26 10:43:02 浏览数 (1)

1. 安装模块

代码语言:javascript复制
npm i egg-mysql --save

2. 配置模块

代码语言:javascript复制
// config/plugin.js
'use strict';

exports.ejs = {
    enable: true,
    package: 'egg-view-ejs',
};

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

3. 配置MySQL数据库的连接

代码语言:javascript复制
// app/controller/config.default.js
'use strict';
module.exports = appInfo => {
    const config = exports = {};
    config.keys = appInfo.name   '_1534304805936_5738';
    config.middleware = [];
    exports.view = {
        mapping: {
            '.html': 'ejs',
        },
    };
    
    // 配置MySQL数据库的连接
    exports.mysql = {
        // database configuration
        client: {
            // host
            host: 'localhost',
            // port
            port: '3306',
            // username
            user: 'root',
            // password
            password: '123456',
            // database
            database: 'test'
        },
        // load into app, default is open
        app: true,
        // load into agent, default is close
        agent: false,
    };
    return config;
};

4. 操作数据库

代码语言:javascript复制
// app/controller/user.js
'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;

5. 事务操作

数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。如果有一个失败执行回滚操作,如果成功执行提交操作,将数据真正的增加到数据库里面。

在MongoDB的新版本里面也支持事务,使用事务必须创建MongoDB副本集,即主从数据库。

代码语言:javascript复制
// app/controller/user.js

'use strict';
const Controller = require('egg').Controller;

class UserController extends Controller {
    async index() {
        // 引入事件对象
        const conn = await this.app.mysql.beginTransaction();
        try {
            // 增加数据操作   
            await conn.insert(
                'user', { username: '张三', 'password': '123456' }
            );  
            // 修改数据操作
            await conn.query(
                'update user set username=? where id=?', ['李四', '2']
            );
            await conn.commit();

            this.ctx.body = '操作成功';

        } catch (err) {
            await conn.rollback();
            throw err;
        };
    }
}

module.exports = UserController;

0 人点赞