Javascript AWS S3在循环中创建ReadStream仅读取和写入1个文件
我试图使用readstream从S3检索多个文件,并将它们本地插入到单个文件中 下面,“output”变量是我希望使用下载的S3文件数据附加到的单个writestream 我正在循环使用nextDay变量作为S3键的日子。fileservice.s3Handler.getS3Obj返回一个S3对象,该对象允许单个文件的readstream并附加到输出文件。 但是,没有读取其他文件,也没有使用on('data',())方法显示控制台。 我试图将readstream包装成一个承诺,即尝试等待读取完成,但它运行的是相同的错误 最近,我一直收到这样的错误:Javascript AWS S3在循环中创建ReadStream仅读取和写入1个文件,javascript,node.js,amazon-s3,Javascript,Node.js,Amazon S3,我试图使用readstream从S3检索多个文件,并将它们本地插入到单个文件中 下面,“output”变量是我希望使用下载的S3文件数据附加到的单个writestream 我正在循环使用nextDay变量作为S3键的日子。fileservice.s3Handler.getS3Obj返回一个S3对象,该对象允许单个文件的readstream并附加到输出文件。 但是,没有读取其他文件,也没有使用on('data',())方法显示控制台。 我试图将readstream包装成一个承诺,即尝试等待读取完成
“ERR\u STREAM\u WRITE\u AFTER\u END”
不确定这里出了什么问题
async fetchCSV(req, res) {
const output = fs.createWriteStream(outputPathWithFile, {
'flags': 'a'});
let nextDay = startDate;
while (nextDay !== endDate) {
const s3path = path.join(`${req.params.stationId}`, `${nextDay}.csv`);
const file = await this.fileService.s3Handler.getS3Obj(s3path);
await this.completePipe(file, output);
nextDay = await getTomorrow(nextDay);
}
}
}
请帮帮我?解决了
做了几件事:
await new Promise((resolve) => {
stream.once('finish', () => {
resolve();
});
});
getS3Obj(file) {
return new Promise(async (resolve) => {
const getParams = {
Bucket: this.bucket,
Key: file
};
resolve(this.s3.getObject(getParams, (err) => {
if (err) {
console.log('Error in getS3 object')
}
}));
})
}
await new Promise((resolve) => {
stream.once('finish', () => {
resolve();
});
});