【问题标题】:AWS Pagination listObjects node.jsAWS 分页 listObjects node.js
【发布时间】:2018-02-01 04:20:07
【问题描述】:

您好,我目前想使用分页列出商店内的图像。我需要每次显示指定数量的图像,并允许循环在我指定的页码处停止。 (例如。每页 30 张图片,我需要第 3 页,我需要列出第 3 页的图片)。到目前为止,它遍历了所有文件,我只需要根据 pageCount 列出 objectsPerPage

(GET /list/{storeid}?page={pageNumber}&per_page={perPage}

var shopId = event.shopkeeper + "/";
var objectsPerPage = event.perPage;
var pageCount = event.pageNumber;

var params = {
    Bucket: AWS_Bucket,
    Delimiter: '/',
    Prefix: shopId,
    MaxKeys: objectsPerPage
}; var dataContents = [];

function s3ListObjects() {
s3.listObjects(params, function(err, data) {
    if (err) {
        console.log("listS3Objects Error:", err);
    } else {
        var contents = data.Contents;
        dataContents = dataContents.concat(contents);
        if (data.IsTruncated) {
            params.Marker = contents[contents.length-1].Key;
            s3ListObjects(params, callback);
        } else {
            console.log(dataContents);
        }
    }
});
}

【问题讨论】:

    标签: javascript node.js amazon-web-services lambda pagination


    【解决方案1】:

    我最终做的一个解决方案是创建一个 pageCounter 变量并将延续标记转换为整数值。然后随着文件通过提供页数循环而增加。还构造了一个简单的 if 语句,以便当 pageCount 等于请求的页面时,它将控制台注销数据。

    var s3DataContents = [];
    var pageCounter = 0;
    
    function s3ListObjects() {
        s3.listObjectsV2(params, function(err, data) {
        if (err) {
            console.log("listS3Objects Error:", err);
        } else {
            if(data.IsTruncated) {
                if(pageCounter == page){
                    s3DataContents = data.Contents;
                    s3DataContents.forEach(function(content){               
                        let dates = new Date(content.LastModified).toLocaleString();
                        let str = content.Key;
                        str = str.split(shopId).pop();
                        return console.log("name: " + str + ";" + " created: " + dates + ";" + " size: " + content.Size +  ";");
                });
                } else {
                    //if more files then iterate through
                    params.ContinuationToken = data.NextContinuationToken;
                    s3ListObjects(params, callback); 
                    //convert string into integer value
                    params.ContinuationToken = parseInt(pageCounter);
                    pageCounter++;
                }
            } else {
                callback("Images not found " + err);
            }
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2019-01-19
      • 2022-01-19
      • 1970-01-01
      • 2019-06-30
      • 1970-01-01
      • 2016-02-07
      • 2021-09-28
      • 2020-02-05
      • 1970-01-01
      相关资源
      最近更新 更多