如何在使用 NodeJS 和 Express 时创建 MySQL 连接池?

新手上路,请多包涵

我可以像这样创建一个 MySQL 连接:

 var mysql      = require('mysql');
var connection = mysql.createConnection({
    host     : 'localhost',
    user     : 'me',
    password : 'secret',
    database : 'my_db'
});

connection.connect();

但我宁愿启动一个池并在我的项目中使用它。

原文由 Utkarsh Kaushik 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 730
2 个回答

只是为了将来帮助某人,这对我有用:

我创建了一个包含池的 mysql 连接器文件:

 // Load module
var mysql = require('mysql');
// Initialize pool
var pool      =    mysql.createPool({
    connectionLimit : 10,
    host     : '127.0.0.1',
    user     : 'root',
    password : 'root',
    database : 'db_name',
    debug    :  false
});
module.exports = pool;

稍后您可以简单地将连接器包含在另一个文件中,我们称之为 manageDB.js:

 var pool = require('./mysqlConnector');

并制作了一个这样的可调用方法:

 exports.executeQuery=function(query,callback){
    pool.getConnection(function(err,connection){
        if (err) {
          connection.release();
          throw err;
        }
        connection.query(query,function(err,rows){
            connection.release();
            if(!err) {
                callback(null, {rows: rows});
            }
        });
        connection.on('error', function(err) {
              throw err;
              return;
        });
    });
}

原文由 Utkarsh Kaushik 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以创建一个连接文件,我们称之为 dbcon.js

 var mysql = require('mysql');

// connect to the db
dbConnectionInfo = {
  host: "localhost",
  port: "3306",
  user: "root",
  password: "root",
  connectionLimit: 5, //mysql connection pool length
  database: "db_name"
};

//For mysql single connection
/* var dbconnection = mysql.createConnection(
        dbConnectionInfo
);

 dbconnection.connect(function (err) {
    if (!err) {
        console.log("Database is connected ... nn");
    } else {
        console.log("Error connecting database ... nn");
    }
});

*/

//create mysql connection pool
var dbconnection = mysql.createPool(
  dbConnectionInfo
);

// Attempt to catch disconnects
dbconnection.on('connection', function (connection) {
  console.log('DB Connection established');

  connection.on('error', function (err) {
    console.error(new Date(), 'MySQL error', err.code);
  });
  connection.on('close', function (err) {
    console.error(new Date(), 'MySQL close', err);
  });

});

module.exports = dbconnection;

现在将此连接包含到另一个文件

var dbconnection = require('../dbcon');
dbconnection.query(query, params, function (error, results, fields) {
    //Do your stuff
});

原文由 sumitjainjr 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进