\$\begingroup\$
\$\endgroup\$
0
I have written JavaScript code for fetching data from a MySQL database. I have used connection pooling and Promise API.
var mySql = require("mysql");
var Promise = require("promise");
var pool = mySql.createPool({
host : "localhost",
user : "root",
password : "rahul",
database : "testDb", //schema
connectionLimit : 13, // at a time 13 connection be created in pool
});
function getDepartments(){
return new Promise(fn);
function fn(resolve,reject){
pool.getConnection(function(err,con){
if(err){
return reject(err);
}else{
con.query("select * from departmentTbl",function(err,rows){
if(err){
return reject(err);
}else{
con.release(); // releasing connection to pool
return resolve(rows);
}
});
}
}); // getConnection
}// fn
} // getDepartments
getDepartments().then(function(rows){
console.log(rows);
}).catch(function(err){
console.log(err);
}).done(function(){
pool.end(); // closing all connections in pool
});
Can I further improve the code? I have only used one Promise. Can I use multiple promises to avoid callback hell?
Jamal
35.2k13 gold badges134 silver badges238 bronze badges
asked Aug 16, 2016 at 8:22
1 Answer 1
\$\begingroup\$
\$\endgroup\$
2
Resource leakage: put con.release()
outside the else
block.
Jamal
35.2k13 gold badges134 silver badges238 bronze badges
answered Aug 8, 2017 at 4:12
-
\$\begingroup\$ Would you need to release on an error? \$\endgroup\$Stephen Rauch– Stephen Rauch2017年08月08日 04:30:38 +00:00Commented Aug 8, 2017 at 4:30
-
1\$\begingroup\$ @StephenRauch Yes, as per the documentation, you need to release on an error. \$\endgroup\$mdfst13– mdfst132017年08月08日 05:44:32 +00:00Commented Aug 8, 2017 at 5:44
default