我已经看到了问题的多个答案,但我无法解决这个问题,因此我将使用我的代码重新发布它。我是新手,需要帮助来理解和解决这个问题。
我的代码
// 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);
});
}
});
答案 0 :(得分:1)
这是因为您每次回到行时都会发送回复。
改变这个:
request.on('row', function (columns) {
var row = {};
columns.forEach(function (column) {
row[column.metadata.colName] = column.value;
});
rows.push(row);
res.json(rows);
});
为:
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);
});