Node.js NodeJS:从GridFS下载多个文件,并通过单击按钮向用户提供zip

Node.js NodeJS:从GridFS下载多个文件,并通过单击按钮向用户提供zip,node.js,reactjs,mongodb,gridfs,grommet,Node.js,Reactjs,Mongodb,Gridfs,Grommet,前端是用ReactJS编写的,更具体地说是索环。单击“下载”按钮可向用户提供多个pdf文件。这些文件存储在GridFS中。我希望给用户一个压缩的文件夹,其中包含所有这些文件。我怎样才能做到这一点 提前谢谢 我有了!!超级简单的解决方案。第一次工作 注意:我正在使用DBFile是我的模型 const GridFsAdapter=require('../adapters/gridfs adapter'); const-archiver=require('archiver'); 异步函数下载多个(查询

前端是用ReactJS编写的,更具体地说是索环。单击“下载”按钮可向用户提供多个pdf文件。这些文件存储在GridFS中。我希望给用户一个压缩的文件夹,其中包含所有这些文件。我怎样才能做到这一点


提前谢谢

我有了!!超级简单的解决方案。第一次工作

注意:我正在使用
DBFile
是我的模型

const GridFsAdapter=require('../adapters/gridfs adapter');
const-archiver=require('archiver');
异步函数下载多个(查询、资源、文件名){
//创建用于下载的流
const archive=archiver('zip'{
zlib:{level:9}//设置压缩级别。
});
//捕获警告(即统计失败和其他非阻塞错误)
存档.on('警告',(错误)=>{
如果(err.code=='enoint'){
//日志警告
帆。日志。警告(错误);
}否则{
//抛出错误
犯错误;
}
});
archive.on('error',(err)=>{
犯错误;
});
//设置文件名
附件(文件名);
//在附加文件/流之前,通过管道将流传输到响应
档案.管道(res);
//添加您的流
等待数据库文件
.stream(查询)
//与mongoDBs cursor.forEach()函数类似。避免将所有记录同时存储在内存中
.eachRecord(异步(dbFile)=>{
//从数据库中获取流
const{stream,data}=wait GridFsAdapter().read(dbFile.fileId);
//将包含文件名的流附加到下载流
append(流,{name:data.filename});
});
//告诉下载流,您已经添加了所有文件
archive.finalize();
}

在internet上找不到任何解决方案。请帮忙