Не могу отфильтровать JSON-подобные вещи - PullRequest
0 голосов
/ 02 мая 2018

Я пишу приложение в node.js, используя данные из https://swapi.co/. Одна из моих функций требует проверки, существует ли указанная планета в моей БД, а если нет, API должен загружать данные планеты из свапи, но почему-то я не могу получить данные об указанной по названию планете, я могу получить только данные в формате, указанном по этой ссылке: 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.log("action: planet not found");
                request.get(
                    'https://swapi.co/api/planets/?format=json',
                    {json: true},
                    function (error, response, body) {
                        console.log(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);
            }
        });
    });

1 Ответ

0 голосов
/ 02 мая 2018

Это JSON. Планеты хранятся в results. В результате это массив объектов, теперь вы можете просмотреть все элементы массива, используя for или in.

Вы можете манипулировать, как хотите, петлями, фильтрами и т. Д.

fetch("https://swapi.co/api/planets/?format=json")
  .then(res => res.json())
  .then(res => {
    console.log(res);
    // Array of planets stored in res.results
    for (let i=0; i<res.results.length; i++) {
      console.log("Name:", res.results[i].name, "Data:", res.results[i])
    }
  });
...