Cześć.
Udało mi się wykonać zapytanie na basie SQL Server.
Niestety żeby uzyskać użyłem setTimeout ustawione na arbitralny czas.
Chciałbym wykonać zapytanie tak szybko jak tylko połączenie z bazą zostanie ustanowione.
Najlepiej przy użyciu promise.
Co można poprawić w tym kodzie:
var Connection = require('tedious').Connection;
var config = {
server: 'DESKTOP-XYZ',
authentication: {
type: 'default',
options: {
userName: 'node',
password: '123456'
}
},
options: {
encrypt: false,
database: 'test'
}
};
var connection = new Connection(config);
connection.on('connect', function(err) {
if (err) {console.log(err)} else {
console.log('connected')
}
});
function connectToSQL() {
return new Promise((resolve, reject) => {
connection.connect();
setTimeout(()=>{resolve()}, 100)
})
}
var Request = require('tedious').Request;
var TYPES = require('tedious').TYPES;
function executeStatement() {
const request = new Request("SELECT * FROM dbo.users", function(err) {
if (err) {
console.log(err);}
});
var result = "";
request.on('row', function(columns) {
columns.forEach(function(column) {
if (column.value === null) {
console.log('NULL');
} else {
result+= column.value + " ";
}
});
console.log(result);
result ="";
});
request.on('done', function(rowCount, more) {
console.log(rowCount + ' rows returned');
});
request.on("requestCompleted", function (rowCount, more) {
connection.close();
});
connection.execSql(request);
}
connectToSQL()
.then(executeStatement)
?