На узле-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);
}}