一尘不染

node.js + mysql连接池

mysql

我试图弄清楚如何构造我的应用程序以最有效地使用MySQL。我正在使用node-
mysql模块。这里的其他线程建议使用连接池,因此我设置了一个小模块mysql.js

var mysql = require('mysql');

var pool  = mysql.createPool({
    host     : 'localhost',
    user     : 'root',
    password : 'root',
    database : 'guess'
});

exports.pool = pool;

现在,每当我要查询mysql时,我都需要此模块,然后查询数据库

var mysql = require('../db/mysql').pool;

var test = function(req, res) {
     mysql.getConnection(function(err, conn){
         conn.query("select * from users", function(err, rows) {
              res.json(rows);
         })
     })
}

这是好方法吗?除了非常简单的示例(其中所有操作均在主app.js脚本中完成)之外,我真的找不到太多的使用mysql连接的示例,因此我真的不知道约定/最佳实践是什么。

我应该在每次查询后始终使用connection.end()吗?如果我忘记了某个地方怎么办?

如何重写我的mysql模块的导出部分以仅返回一个连接,所以我不必每次都写getConnection()?


阅读 474

收藏
2020-05-17

共1个答案

一尘不染

这是一个好方法。

如果只想建立连接,则将以下代码添加到池所在的模块中:

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

module.exports = getConnection;

您仍然必须每次都写getConnection。但是,您可以在第一次获得连接时将其保存在模块中。

使用完后,不要忘记终止连接:

connection.release();
2020-05-17