#javascript #html #json #amazon-s3 #fetch
#javascript #HTML #json #amazon-s3 #выборка
Вопрос:
У меня есть файл json, размещенный на S3, который я пытаюсь извлечь и использовать для записи ссылок в неупорядоченный список. Когда я тестирую свои json-данные, размещая их локально, с помощью json-сервера (на NPM), все работает отлично. Однако при извлечении из S3 список не выводится, хотя единственное отличие заключается в том, где размещен json. Я решил свои проблемы с разрешениями с помощью S3, и я успешно добился его извлечения, поскольку я смог зарегистрировать данные json в консоли, но не могу заставить его создать список.
const jsonUrl_Q418 = 'http://localhost:3000/Letters';
fetch(jsonUrl_Q418)
.then(res => res.json())
.then(data => {
for(let i=0; i < data.length; i ) {
let listItem = document.createElement('li');
listItem.innerHTML = '<a href=' data[i].url '>' data[i].name '</a>';
lettersList.appendChild(listItem);
}
});
Если я изменю jsonUrl_Q418 на ссылку s3, это не будет работать так же. Любая помощь приветствуется.
Комментарии:
1. Какие-либо ошибки в вашей консоли? Что такое
lettersList
? Похоже, что это не определено2. Ваши данные доступны в data.data.
3. Список букв был определен выше этого фрагмента. Это просто <ul>, который я создал. @DEVCNN спасибо, я проверю это, когда вернусь домой!
4. @DEVCNN Я попытался выполнить console.log (data.данные) и получил ошибку типа.
5. Дело в том, что я попробовал это с axios, и это сработало. Поэтому я надеялся, что fetch также может работать. Но fetch — это совсем другой модуль. Он возвращает буфер. Вам нужно будет прочитать этот буфер и преобразовать его в json. Я бы рекомендовал использовать axios, если это возможно.
Ответ №1:
В этом примере используется модуль выборки. Это должно зарегистрировать ваши данные. Обратите внимание, что объект ‘res’ представляет собой буфер, который можно прочитать, преобразовав его в строку. Теперь, если вам нужны данные в виде объекта — JSON.parse(res.toString(‘utf8’))
fetch('https://s3.ap-south-1.amazonaws.com/misc-csv/tslint.json',
function(err,meta,res){
console.log('AXIOS:',(res.toString('utf8')));
return JSON.parse(res.toString('utf8'))
});