larvitdb
DB pool wrapper for node.js
This module is used to share a mysql/mariadb pool of connections between modules, classes, files etc.
It also logs with winston if there is a database error, so you do not need to fetch the database error manually each time.
Installation
npm i larvitdb
Usage
The module must first be required and then configured.
Make this in your main application file:
const db = require('larvitdb');
db.setup({
"connectionLimit": 10,
"socketPath": "/var/run/mysqld/mysqld.sock",
"user": "foo",
"password": "bar",
"charset": "utf8_general_ci",
"supportBigNumbers": true,
"database": "my_database_name"
});
See list of native options here. Then you can just require the module in your other files for usage, like this:
A direct query
const db = require('larvitdb');
db.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
console.log('dbmodel: The solution is: ', rows[0].solution);
});
Or, if a connection is needed:
const db = require('larvitdb');
db.pool.getConnection(function(err, dbCon) {
const sql = 'SELECT * FROM users WHERE username LIKE ' + dbCon.escape(postData);
dbCon.query(sql, function(err, rows) {
dbCon.release();
if (err)
throw err;
});
});
You dont need to get a connection to escape though. You can do like this:
const db = require('larvitdb');
db.query('SELECT * FROM users WHERE id = ?', [userId], function(err, results) {
});
Advanced configuration - recoverable errors
Sometimes recoverable errors happend in the database. One such example is deadlocks in a cluster. Here we'll provide an example of how to make the database layer retry a query 5 times if a deadlock happends, before giving up.
const db = require('larvitdb');
db.setup({
"connectionLimit": 10,
"socketPath": "/var/run/mysqld/mysqld.sock",
"user": "foo",
"password": "bar",
"charset": "utf8_general_ci",
"supportBigNumbers": true,
"database": "my_database_name",
"retries": 5,
"recoverableErrors": ["ER_LOCK_DEADLOCK"]
});
db.query('DELETE FROM tmpTable LIMIT 10');
Custom functions
Remove all tables from current database
This function will clean the current database from all tables.
const db = require('larvitdb');
db.removeAllTables();