This is an abstraction layer built on https://github.com/felixge/node-mysql it add's various helper methods, helps deal with transactions and supports promises.
Example usage:
var Connection, mysql, q;
mysql = require('mysql-abstraction')({
user: process.env.MYSQL_USER,
host: process.env.MYSQL_HOST,
password: process.env.MYSQL_PASSWORD,
connectionLimit: 100
});
q = new mysql.Connection(true);
q.q({ q:'SELECT something FROM table WHERE id=?',params:[1],lock:1,cb: function(err,data){
q.q( { q:'UPDATE table SET something=? WHERE id=?',params:['something else',1],function(){
q.end()
}})
} })
q = new mysql.Connection();
q.count({ q:'SELECT count(*) FROM table',cb: function(err,data){
console.log(data);
} })
q = new mysql.Connection();
q.row({ q:'SELECT something FROM table WHERE id=1',cb: function(err,data){
console.log(data);
} })
q = new mysql.Connection();
q.count({ q:'SELECT count(*) FROM table' }).then((data) => {
}).catch((err) => {
})
async function getCount() {
try {
q = new mysql.Connection();
const data = await q.count({ q:'SELECT count(*) FROM table' })
} catch (err) {
}
}
getCount()
See tests/ for more usage examples
Note when deadlocks are automatically rolled back and queries are reissued any autoincrement columns aren't reverted, see http://stackoverflow.com/questions/14758625/mysql-auto-increment-columns-on-transaction-commit-and-rollback for more details
There is a crude stats collection via the connection.stats prameter which counts the number of select/update/delete/insert queries per connection, you can disable stats collection by setting connection.gatherStats to false