Quantcast
Channel: CNode:Node.js专业中文社区
Viewing all articles
Browse latest Browse all 14821

[mysql] query.stream 将查询结果流写入response如何handle中途可能产生的error?

$
0
0

有时会碰到向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);

Viewing all articles
Browse latest Browse all 14821

Trending Articles