提问者:小点点

如何在nodejs上等待msSQLdb响应


我正在做一个应用程序,我需要“res.send()”SQLdb响应。问题是我的db发送响应太晚了。
以下是我当前的解决方案:

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


共1个答案

匿名用户

您正在此实例中使用回调,因此需要将回调传递给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);
    });
});