@autobits/express-myconnection

1.0.8 • Public • Published

This is a Fork of the project https://github.com/pwalczyszyn/express-myconnection

The only difference from the original one is that this module return promises instead of callbacks and additionally this module allows to set 2 different mysql connections for the same express API. This fork was required to support simultaneous connections to 2 different mysql databases (main instance and a read-replica instance), Secondary connection is optional.

Usage

// app.js
...
var mysql = require('mysql'), // node-mysql module
myConnection = require('express-myconnection'), // express-myconnection module

dbOptions = {
  host: 'localhost',
  user: 'dbuser',
  password: 'password',
  port: 3306,
  database: 'mydb'
};
dbOptionsSecondary = {
  host: 'localhost2',
  user: 'dbuser2',
  password: 'password2',
  port: 3306,
  database: 'mydb'
};
  
app.use(myConnection(mysql, 'single', dbOptions, dbOptionsSecondary));
...

express-myconnection extends request object with getConectionAsync and getConectionSecondaryAsync promise functions, this way connection instance can be accessed anywhere in routers during request/response life cycle:

// myroute.js
...
module.exports = function(req, res, next) {
    ...
    req.getConnectionAsync(function(err, connection) {
      if (err) return next(err);
      
      connection.query('SELECT 1 AS RESULT', [], function(err, results) {
        if (err) return next(err);
        
        results[0].RESULT;
        // -> 1
        
        res.send(200);
      });
      
    });
    ...
}
...

// myroute2.js
...
module.exports = function(req, res, next) {
    ...
    req.getConnectionSecondaryAsync(function(err, connection) {
      if (err) return next(err);
      
      connection.query('SELECT 1 AS RESULT', [], function(err, results) {
        if (err) return next(err);
        
        results[0].RESULT;
        // -> 1
        
        res.send(200);
      });
      
    });
    ...
}
...

release connection use req.releaseConnection to manual release a connection // myroute.js ... module.exports = function(req, res, next) { ... req.getConnectionAsync(function(err, connection) { if (err) return next(err); connection.query('SELECT 1 AS RESULT', [], function(err, results) { connection = null; req.releaseConnection(); //manual to release a connection if (err) return next(err); results[0].RESULT; // -> 1 requestUrl(url, function(err, data) { if (err) return next(err); req.getConnection(function(err, connection) { //get a connection again connection.query('SELECT 2 AS RESULT', [], function(err, results) { res.send(200); }); }); }) });

  });
  ...
}
...

Dependents (0)

Package Sidebar

Install

npm i @autobits/express-myconnection

Weekly Downloads

8

Version

1.0.8

License

MIT

Unpacked Size

25.2 kB

Total Files

9

Last publish

Collaborators

  • awilches