На узле-mssql вернуть результат запроса

function getAllCustomers() {

    const pool = new sql.ConnectionPool(config);
    const request = new sql.Request(pool);

    try {
        pool.connect(function () {
            request.query('select * from Customers', function (err, res) {
                console.log(res.recordset);
                return res.recordset;
            });
        });
    } catch (error) {
        console.log(error);
    }
    return;
}

Я плавно печатаю res.recordset на консоль, но когда я хочу вернуть это значение из функции, возвращается ноль. Что я должен сделать для этого?

1 ответ

Решение

Вы получаете ответ функции request.query при вызове обратного вызова. Ваш последний возврат будет выполнен до вызова обратного вызова, поэтому вы получаете нулевое значение.

function getAllCustomers(callBack) {

const pool = new sql.ConnectionPool(config);
const request = new sql.Request(pool);

try {
    pool.connect(function () {
        request.query('select * from Customers', function (err, res) {
            if(err){
                callBack(err);
            }
            else{
                console.log(res.recordset);
                callBack(false,res);
            }
        });
    });
} catch (error) {
    console.log(error);
    callBack(error);
}}
Другие вопросы по тегам