获取node.js应用程序以从AWS S3存储桶中提取多个页面时遇到问题(超过1000个文件)

时间:2019-02-05 16:25:35

标签: node.js amazon-s3

我继承了一个node.js应用程序,并且试图通过修复问题来伪装自己的方式。在达到AWS存储桶的1000个文件页面限制之前,一切工作都很好。我已经尝试过使用.eachPage()标准和异步进程以及.hasNextPage()进程,但无法使其正常工作。我觉得我的尝试最接近这个版本。在我看来,这似乎很有意义,但它只会提取前1000个文件。有人可以帮我指出正确的方向,以便加载这些额外的数据页吗?

viewControllers

1 个答案:

答案 0 :(得分:0)

似乎您在这里有一些冲突的JS概念。当您将异步样式与三个参数一起使用时,只要调用done(),下一页就会立即执行-由于您立即执行了此操作,因此下一页会立即开始执行,因此对return之后。

您还为文件的每一页调用res.render(),这可能不是您想要的,并且为什么看起来只列出了1000个文件(实际上您渲染了前1000个文件,然后继续做很多工作发送结果后在后台!)。我会推荐以下内容:

var files = [];
s3.listObjects({
  Bucket: config.aws.s3.bucket
}).eachPage(function(error, data){
  if(err) return;
  files.push(data.Contents);
});

// Now do something with all the files
res.render('whatever',files);