Не могу фильтровать JSON-подобные вещи

Я пишу приложение на node.js, используя данные из https://swapi.co/. Одна из моих функций требует проверки, существует ли указанная планета в моей базе данных, когда это не так, api должен загружать данные планеты из swapi, но каким-то образом я не могу получить данные об указанной по имени планете, я могу получить данные только в формате, предоставленном с эта ссылка: https://swapi.co/api/planets/?format=json

  • когда я пытаюсь отфильтровать или преобразовать этот результат в JSON или отфильтровать его, nodejs выдает мне ошибку, но запись тела ответа в консоли показывает, что он очень похож на 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);
            }
        });
    });

он показывает данные, так в чем же проблема?

Dipak 02.05.2018 13:12
repl.it/repls/FlawlessNavyInterfaces
Dipak 02.05.2018 13:19
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
83
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это 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 ().

Sadixu 05.05.2018 17:19

Другие вопросы по теме