有时会碰到向db查询大量记录,需要边接收边处理的场景。mysql模块提供了一个流式查询的方法streaming query rows。 如果需要每收到一条记录就写入到http response中,如何处理接收过程中可能产生的错误呢?此时response head已经发出200,且已经正常发送了部分数据,当query发生错误时,如何通知客户端发生了错误? 代码如下:
const pool = require('mysql').createPool(...);
const http = require('http');
http.createServer((req, res)=> {
response.statusCode = 200;
let sql = 'SELECT * FROM tb1';
let query = pool.query(sql);
query
.on('result', (row)=> {
res.write(JSON.stringify(row));
})
.on('error', (err)=> {
res.end(); // 如何handle中途可能产生的error?
})
.on('end', ()=> {
res.end();
});
}).listen(8000);