Я использую tedious
и у меня есть такая рабочая функция: учитывая, что это asyn c, я использую функцию обратного вызова, чтобы получить данные вне функции. Но браузер зависает, это работает, если я просто загружаю функцию вне запроса.
Пробовал другие функции, и он работает, но не уверен, что пропущен кусок с этим вызовом.
const config = {
server: 'server',
authentication: {
type: 'default',
options: {
userName: 'usernane',
password: 'password'
}
},
options: {
encrypt: false,
database: 'database'
}
};
const connection = new Connection(config);
module.exports = {
getDataById: (id, callback) => {
const data = [];
connection.on('connect', function (err) {
if (err) {
console.log(err)
} else {
var request = new Request("store proc", (err) => {
if (err) {
console.error(err.message);
}
connection.close();
});
request.on("row", columns => {
columns.forEach(column => {
data.push({
name: column.metadata.colName,
value: column.value
});
});
callback(data);
});
request.addParameter('RecordId', TYPES.BigInt, id);
connection.callProcedure(request);
}
});
}
В приложении. js
Я вызываю этот метод в запросе get:
app.get('/load', (req, res) => {
getDataById(someid, (data) => {
res.send(data);
});
});
В браузере висит:
http://localhost:3000/load