How do I create a MySQL connection pool while working with NodeJS and Express? How do I create a MySQL connection pool while working with NodeJS and Express? express express

How do I create a MySQL connection pool while working with NodeJS and Express?


Just to help some one in future, this worked for me:

I created a mysql connector file containing the pool:

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

Later you can simply include the connector in another file lets call it manageDB.js:

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

And made a callable method like this:

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;             });    });}


There is some bugs in Utkarsh Kaushik solution:

  • if (err), the connection can not be released.connection.release();

  • and when it has an err, next statement .query always execute although it gets an error and cause the app crashed.

  • when the result is null although query success, we need to check if the result is null in this case.

This solution worked well in my case:

exports.getPosts=function(callback){    pool.getConnection(function(err,connection){        if (err) {          callback(true);          return;        }        connection.query(query,function(err,results){            connection.release();            if(!err) {                callback(false, {rows: results});            }            // check null for results here        });        connection.on('error', function(err) {              callback(true);              return;        });    });};


You can create a connection file, Let's called dbcon.js

var mysql = require('mysql');// connect to the dbdbConnectionInfo = {  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 poolvar 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;

Now include this connection to another file

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