我试图返回存储桶中具有特定路径的所有对象的列表,并循环遍历这些对象。
每次迭代时,我都希望为该对象调用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调用的异步特性引起的,但是我不知道哪种模式最能解决此问题。