Попытка получить доступ к корзине S3 из экспресс-приложения node.js.Я пытаюсь вернуть файл JSON из корзины в форме объекта JSON.Вот код:
let gets3 = function(file) {
devs3();
return new Promise(function(resolve, reject) {
var params = {
Bucket: S3_BUCKET,
Key: file
}
var s3 = new aws.S3();
try {
s3.getObject(params, function(err, data) {
var myfile = JSON.parse(data.Body.toString());
resolve(myfile);
});
} catch (err) {
reject(err);
}
});
}
module.exports = {
fetchEvents : function(cata) {
var myJson;
switch (cata) {
case "Pr":
myJson = 'primaryEvents.json';
case "Sc":
myJson = 'secondaryEvents.json';
case "Po":
myJson = 'postEvents.json';
}
let gets3init = gets3(myJson);
gets3init.then(function(file) {
console.log('From Fetch Events: ' + JSON.stringify(file));
return file;
});
}
}
devs3 () просто устанавливает информацию для входа в S3 и запускает aws.config.setPromisesDependancy.В моем основном app.js я запускаю fetchEvents («Pr»), а затем пытаюсь отобразить его.В моей консоли он успешно отображает содержимое файла json, однако приложение существует с ошибкой типа: cannot read property 'n' of undefined
, где n - имя первого элемента в файле Json.Следует отметить, что эта ошибка отображает в консоли перед тем, как печатается файл JSON, показывая, что функция не ожидает завершения get3 и возврата файла.Есть ли способ заставить приложение ждать (это происходит при загрузке страницы) обещания разрешить?