问题描述
我正在说明我需要“ res.send()” sqldb响应。问题是我的数据库发送响应太晚了。
这是我当前的解决方案:
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);
});
如果我删除“ setTimeout”,这是我第一次加载时得到的:
image
这是上面代码的第二次运行/结果:result
解决方法
您在此情况下使用回调,因此您需要将回调传递给sqldb()
函数。所以
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);
});
});