I'm making an aplication that a I need to "res.send()" the SQLdb response. The problem is that my db is sending the response too late.
Here is my current solution:
var sqlres;
function sqldb(SQLquery){
sql.connect(config, function (err) {
if (err) console.log(err);
var request = new sql.Request();
request.query(SQLquery, function (err, recordset) {
if (err) console.log(err)
sqlres = recordset.recordset;
});
});
}
app.get('/db', function (req, res) {
sqldb('SELECT * from dbo.pontos');
const timeoutObj = setTimeout(() => {
res.send(sqlres);
}, 1500);
});
If I remove "setTimeout" here is what i get on the first load:
image
And here is the second run/result of the code above: result
you are using callbacks in this instance, so you need to pass a callback to your sqldb()
function. so
var sqlres;
function sqldb(SQLquery, cb){
sql.connect(config, function (err) {
if (err) console.log(err);
var request = new sql.Request();
request.query(SQLquery, function (err, recordset) {
if (err) console.log(err)
sqlres = recordset.recordset;
cb(sqlres)
});
});
}
app.get('/db', function (req, res) {
sqldb('SELECT * from dbo.pontos', (sqlres) => {
res.send(sqlres);
});
});