Я пишу приложение на node.js, используя данные из https://swapi.co/. Одна из моих функций требует проверки, существует ли указанная планета в моей базе данных, когда это не так, api должен загружать данные планеты из swapi, но каким-то образом я не могу получить данные об указанной по имени планете, я могу получить данные только в формате, предоставленном с эта ссылка: https://swapi.co/api/planets/?format=json
Код метода:
router.route('/Planets')
.post(function (req, res) {
var planet = new Planet(req.body);
//validate planet.name here
Planet.find({name: planet.name}, function (err, planet) {
if (err) {
res.status(500).send(err);
}
if (planet == '') {
console.info("action: planet not found");
request.get(
'https://swapi.co/api/planets/?format=json',
{json: true},
function (error, response, body) {
console.info(body);
}
);
// planet.save();
res.status(201).send(planet);
} else {
res.status(201).send(planet);
}
})
})
.get(function (req, res) {
Planet.find(function (err, planets) {
if (err) {
res.status(500).send(err);
} else {
res.json(planets);
}
});
});
Это JSON.
Планеты хранятся в results
.
Итак, результат - это массив объектов, теперь вы можете просмотреть все элементы массива, используя for
или in
.
Вы можете манипулировать, как хотите, петлями, фильтрами и т. д.
fetch("https://swapi.co/api/planets/?format=json")
.then(res => res.json())
.then(res => {
console.info(res);
// Array of planets stored in res.results
for (let i=0; i<res.results.length; i++) {
console.info("Name:", res.results[i].name, "Data:", res.results[i])
}
});
Спасибо за ответ, это работает как шарм, но я хочу попросить еще 2 вещи: - как я могу вызывать функции из других файлов js внутри fetch? После их использования с require все мои функции запускаются сразу после компиляции файла? - есть ли способ получить доступ к данным из выборки вне тела: я хочу извлечь указанную планету, сохранить ее в БД и отправить со статусом 201, но не могу сделать это внутри fetch ().
он показывает данные, так в чем же проблема?