[英]Server responds with Stream data only once
我需要通过 Http 从大 csv 文件发送数据。这是我的代码
const transformToJson = new Transform({
objectMode: true,
transform(chunk, encoding, done) {
this.push(JSON.stringify(chunk));
done();
}
});
app.get('/api', (req: Request, res: Response) => {
const stream = fs.createReadStream(filePath);
stream.pipe(csvParser()).pipe(transformToJson).pipe(res);
stream.on('open', () => console.log('open'))
stream.on('close', () => console.log('closed'))
req.on('aborted', () => stream.destroy());
})
问题是当我在这个端点上发送请求时,我得到了数据,但只有一次。 如果我再次发送我的请求(没有重新加载服务器),它几乎立即返回无效。
open
[start:run] closed
[start:run] open
[start:run] open
[start:run] open
[start:run] open
这是打开和关闭事件的控制台日志,如您所见,可读 stream 仅关闭一次,也没有错误。
将不胜感激您的帮助!
问题出在我的 Transform stream 上。 我创建了一次,但每次请求都必须这样做。
const transformToJson = () => new Transform({
objectMode: true,
transform(chunk, encoding, done) {
this.push(JSON.stringify(chunk));
done();
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.