As mentioned, we’re using a MySQL database for our example. Below is the code for the example wrapper for working with database connections.
server/common/mysql.js
const mysql = require('mysql');
const pool = mysql.createPool({
host: 'localhost',
port: '3306',
user: 'root',
password: 'passwordForRoot',
database: 'database',
});
function executeQuery(connection, query) {
return new Promise((resolve, reject) => {
let text = query;
let values = [];
if (typeof query === 'object') {
const param = query.toParam();
text = param.text;
values = param.values;
}
connection.query(text, values, (err, res) => {
if (err) {
reject(err)
} else {
resolve(res)
}
});
});
}
const MySQLWrapper = {
/**
* Executes query in separate pool connection
*/
async query(query) {
return await executeQuery(pool, query);
},
/**
* Provide methods to execute in separate connection
*/
getConnection() {
return new Promise((resolve, reject) => {
pool.getConnection((error, connection) => {
if (error) {
reject(error);
return;
}
resolve({
async query(query) {
return await executeQuery(connection, query);
},
release() {
connection.release();
}
});
});
});
}
};
module.exports = MySQLWrapper;