Reputation: 1550
I have seen multiple answers for the question but I am not able to solve this issue, so I am re-posting it with my code. I am new to this and need help to understand and fix this.
My Code
// Get logs from DB
router.get("/getlogs/:dbtype", function (req, res, next) {
var dbtype = req.params.dbtype;
if (dbtype == "mongodb") {
list = Logs.find(function (err, log) {
res.json(log);
})
} else if (dbtype == "mssql") {
var config = {
userName: 'user',
password: 'pass',
server: 'server',
options: {
instanceName: 'instance',
database: 'db',
}
};
// SQL Server connection
var connection = new Tedious.Connection(config);
connection.on('connect', function (err) {
// if (err) { console.log(err); res.json(err);}
// If no error, then good to proceed.
//console.log("SQL Server Connected SQL SQL");
//connection.on('debug', function(err) { console.log('debug:', err);});
var request = new Tedious.Request(`select top 1 * from table1`, function (err) {
//if (err) { console.log(err); res.json(err);}
});
request.on('row', function (columns) {
var row = {};
columns.forEach(function (column) {
row[column.metadata.colName] = column.value;
});
rows.push(row);
res.json(rows); **<-- this is where I get error**
});
request.on('end', function () {
res.json(rows);
})
connection.execSql(request);
});
}
});
Upvotes: 0
Views: 100
Reputation: 8060
It's because you are sending response every time you recive row.
Change this:
request.on('row', function (columns) {
var row = {};
columns.forEach(function (column) {
row[column.metadata.colName] = column.value;
});
rows.push(row);
res.json(rows);
});
to:
request.on('row', function (columns) {
var row = {};
columns.forEach(function (column) {
row[column.metadata.colName] = column.value;
});
rows.push(row);
});
request.on('doneInProc', function () {
res.json(rows);
});
Upvotes: 1