Возврат содержимого для нескольких объектов S3 с использованием AWS SDK - PullRequest
0 голосов
/ 12 января 2019

Я пытаюсь вернуть список всех объектов по заданному пути в корзине и перебрать эти объекты.

На каждой итерации я хотел бы вызывать 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, но я не знаю, какой шаблон лучше всего решить эту проблему.

...