CSV文件没有文件内容流式传输到存档中

时间:2019-05-23 08:05:27

标签: javascript typescript stream node-archiver

我正在尝试构建一些流式处理组件管道,以将数据库表中的数据读入JSON到CSV转换器,并将结果读入ZIP存档中的文件。除了将数据写入CSV文件之外,它看起来还不错。这些文件总是空的,而我直接写到档案中的摘要文件就可以了。

我试图找出流是否在某个时刻被中断,但是数据似乎通过了管道的每个部分。

这是代码的基本部分:

//before:
//let archive: Archiver = create('zip');
//archive.pipe(fileWriterStream);

let archivePassThrough = new PassThrough();

archivePassThrough.on("data", (chunk) => {
  this.logger.info("PT:" + chunk);
});

archive.append(archivePassThrough, { name: absTargetFile });


//Use pass through for piping db query results in converter
let dbPassThrough = new PassThrough();

dbPassThrough.on("data", (chunk) => {
  this.logger.info(chunk);
});


//Convert JSON to CSV (stream)
let converterStream = new AsyncParser();
converterStream.fromInput(dbPassThrough).toOutput(archivePassThrough);

converterStream.processor.on("end", () => {
   this.logger.info("Converting complete");
   resolve(absTargetFile);
});
converterStream.processor.on("error", (err: any) => {
   this.logger.info(err);
   reject(err);
});


//Read data from result set
rs.setFetchSize(2048);
rs.createObjectStream().pipe(dbPassThrough)
   .on('finish', function (){
      if (!rs.closed) {
        rs.close();
      }
   });

//afterwards:
//archive.finalize();

所示部分包装在Promise中,当处理完成时,Promise将得到解决。 写入所有文件后,将最终确定归档文件。 存档本身是使用FileWriterStream写入磁盘的。

知道我在做什么错吗?

0 个答案:

没有答案