使用Express的节点js Mysql连接池

时间:2017-11-20 20:51:56

标签: mysql node.js connection-pooling mysqlconnection

这是mysql.js文件

var mysql = require('mysql');

var pool = mysql.createPool({
    connectionLimit: 100,
    connectTimeout: 5000,
    acquireTimeout: 5000,
    queueLimit: 30,
    host: 'localhost',
    user: '',
    password: '',
    database: '',
    multipleStatements: true,
});


var getConnection = function(callback) {
    pool.getConnection(function(err, connection) {
        if (err) return callback(err);
        callback(err, connection);
    });
};

pool.on('acquire', function(connection) {
    console.log('Connection %d acquired', connection.threadId);
});
module.exports = getConnection;

这是我的路由控制器之一

var getConnection = require('../config/mysql');
//get / or /homepage 
exports.getIndex = function(req, res) {
    getConnection(function(err, con) {
        que = 'SELECT SOMETHING FROM SOMEWHERE';
        con.query(que, function(err, result) {
            if (err) throw err;
            //console.log(JSON.stringify(result));
            //console.log(result[0]);
            con.release();
            res.render('page/home', { result:result});
        });
    })
}

我在我的routes.js文件中使用控制器,如下所示

var controller = require('../controllers/indexController');
router.get('/', controller.getIndex);

我的问题是关于连接池。我的方式是否适合使用连接池?而且我也用这种方式控制其他控制器,所以我的意思是如果我需要控制器中的连接,我会为每个控制器调用连接。感谢您的建议

0 个答案:

没有答案