MySQL创建数据库连接池

适用于Koa2和Express进行连接

安装 mysql驱动

npm install mysql --save

创建mysql数据连接池,封装mysql请求

const mysql = require('mysql');
const pool = mysql.createPool({
    host     :  '127.0.0.1',
    user     :  'root',
    password :  'root',
    database :  'mydatabase'
});
let query = function( sql, values ) {
    // 返回一个 Promise
    return new Promise(( resolve, reject ) => {
        pool.getConnection(function(err, connection) { // 开启数据库
            if (err) {
                reject( err );
            } else {
                console.log('开启成功!');
                pool.query(sql, values, ( err, rows) => {
                    if ( err ) {
                        reject(err);
                    } else {
                        resolve(rows);
                    }
                    // 结束会话
                    connection.release();
                });
            }
        });
    });
};
// 抛出query
module.exports =  query;

Koa2使用

router.post('/login', async (ctx) => {
    // 这里可以同步获取到rows
    let rows = await query('select * from table_name');
    ctx.body = {
        code: 0,
        msg: '请求成功',
        data: rows
    }
});

Express使用

router.post('/login', async (req, res) => {
    
    // 原来做法
    // query('select * from im_user', (err, rows) => {
    //     res.json({
    //         code: 0,
    //         msg: '请求成功',
    //         data: rows
    //     })
    // })
    
    // 现在
    const rows = await query('select * from table_name');
    res.json({
        code: 0,
        msg: '请求成功',
        data: rows
    });
});

你可能感兴趣的:(MySQL创建数据库连接池)