Node js: mssql [ConnectionError: Connection is closed.] name: 'ConnectionError', message: 'Connection is closed.', code: 'ECONNCLOSED'
I know it is an old questionm but this answer is for the others who are facing the same isue. I had the same problem, What I did is, used promises as below.
function getData() { try { sqlInstance.connect(setUp) .then(function () { // Function to retrieve all the data - Start new sqlInstance.Request() .query("select * from Course") .then(function (dbData) { if (dbData == null || dbData.length === 0) return; console.dir('All the courses'); console.dir(dbData); }) .catch(function (error) { console.dir(error); }); // Function to retrieve all the data - End // To retrieve specicfic data - Start var value = 1; new sqlInstance.Request() .input("param", sqlInstance.Int, value) .query("select * from Course where CourseID = @param") .then(function (dbData) { if (dbData == null || dbData.length === 0) return; console.dir('Course with ID = 1'); console.dir(dbData); }) .catch(function (error) { console.dir(error); }); // To retrieve specicfic data - End }).catch(function (error) { console.dir(error); }); } catch (error) { console.dir(error); }}
This solved my issue. You can find the fix here.
I just use promise to handle concurrent request:
const executeQuery = function (res, query, dbName) { dbConfig = { user: "********", password: "********", server: "*******", database: dbName } sql.connect(dbConfig).then(pool => { return pool.request().query(query) }).then(result => { res.send(result); }).catch(err => { res.send(err); });}
Hope it's help someone.