前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Egg 中结合Egg-mysql操作MySQL

Egg 中结合Egg-mysql操作MySQL

作者头像
越陌度阡
发布2020-11-26 10:43:02
1.4K0
发布2020-11-26 10:43:02
举报

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;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/03/29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 安装模块
  • 2. 配置模块
  • 3. 配置MySQL数据库的连接
  • 4. 操作数据库
  • 5. 事务操作
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档