使用AWS开发工具包返回多个S3对象的内容

时间:2019-01-12 04:14:23

标签: javascript aws-sdk aws-sdk-js

我试图返回存储桶中具有特定路径的所有对象的列表,并循环遍历这些对象。

每次迭代时,我都希望为该对象调用getObject,将内容存储到数组中或与其他对象并置,以便我可以返回所有包含在一起的数据。

    var params = {
        "Bucket": bucket,
        "Delimiter": '/',
        "Prefix": 'estimates/'
    };

    s3.listObjects(params, function(err, data){
        if(err) {
            callback(null, failure({status: false, error: err}));
        } else {
            data.Contents.forEach(function(obj,index){
                var obj_params = {
                    "Bucket": bucket,
                    "Key": obj.Key
                }

                s3.getObject(obj_params, function(err,data){
                    if(err) {
                        callback(null, failure({status: false, error: err}));
                    } else {
                        well_data.push(data.Body.toString('utf-8'));
                    }
                });

            })
            console.log(well_data);
            callback(null, success(well_data));
        }
    });

问题在于,最后的well_data返回一个空数组。我知道这是由于getObject调用的异步特性引起的,但是我不知道哪种模式最能解决此问题。

0 个答案:

没有答案