我在NodeJS中使用mssql来获取大量行 .
我想在Express中将结果传递给HTTP响应,但我看不出如何实现这一点 .
db.js
const sql = require('mssql');
const config = {
user: 'user',
password: 'pass',
server: 'host',
database: 'db',
};
index.js
我能够将结果传输到命令行:
router.get('/', function (req, res, next) {
new sql.ConnectionPool(config).connect().then(pool => {
const request = new sql.Request(pool);
request.stream = true;
request.query(`SELECT col1, col2 FROM mytable`);
request.on('row', row => {
console.log(row);
});
});
});
module.exports = router;
但是,使用request.pipe()会导致错误:
router.get('/', function (req, res, next) {
new sql.ConnectionPool(config).connect().then(pool => {
const request = new sql.Request(pool);
request.pipe(res);
request.query(`SELECT col1, col2 FROM mytable`);
request.on('finish', () => {
res.end();
});
});
});
http_outgoing.js:647抛出新的错误.TypeError('ERR_INVALID_ARG_TYPE','第一个参数',^ TypeError [ERR_INVALID_ARG_TYPE]:第一个参数必须是write(_http_outgoing.js:647:11)处的类型字符串或缓冲区之一Request.emit的ServerResponse.write(_http_outgoing.js:622:10)(events.js:180:13)
1 回答
编辑:如果您关心流媒体,为什么不将它存储在对象中