Как получить конкретные данные из API и использовать в функции? - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь создать приложение погоды в nodejs с API темного неба. Я получил отдельный файл js и храню информацию о моем прогнозе в функции обратного вызова. Однако я также хочу использовать Skycons для визуализации.

это мой прогноз.js. в этом скрипте я получаю информацию, такую ​​как температура и т. д., поэтому мне нужно также получить данные «иконки»

const request = require('request')


const getWeather = (latitude, longitude, callback) => {

    const url = 'https://api.darksky.net/forecast/b0854aec02e1655c7203e05c7d77dfd1/' + latitude + ',' + longitude + '/?units=si'

    request({
        url: url,
        json: true
    }, (error, {
        body /* "response " evezine response object icindeki "body" birbasa daxil edirem function-a*/
    }) => {
        if (error) {
            callback('Unable to connect to weather service!', undefined)
        } else if (body.error) {
            callback('Unable to find location'.undefined)
        } else {
            callback(undefined,
                'It is currently ' + body.currently.temperature + '°C out in ' + body.timezone + '. Weather ' + body.daily.data[0].summary + ' There is a ' + (body.currently.precipProbability * 100) + '% chance of rain.'
            )
        }
    })

}

module.exports = getWeather

Это функция выборки, и я попытался вызвать и активировать Skycons в этой функции. но я не могу получить данные «иконки» из API.

const weatherForm = document.querySelector("form");
const search = document.querySelector("input");

const messageOne = document.querySelector("#message-1");
const messageTwo = document.querySelector("#message-2");

const skycons = new Skycons({
  color: '#222'
})
skycons.set('icon', 'clear-day');
skycons.play();

const icon = data.forecast.icon;


weatherForm.addEventListener("submit", e => {
  e.preventDefault();

  const location = search.value;

  messageOne.textContent = "Please wait....";
  messageTwo.textContent = "";

  fetch(
    "http://localhost:4000/weather?address=" + encodeURIComponent(location)
  ).then(response => {
    response.json().then(data => {
      if (data.error) {
        messageOne.textContent = data.error;
      } else {
        messageOne.textContent = data.location;
        messageTwo.textContent = data.forecast;

      }
      currentSkycons(icon, document.getElementById('icon'));
    });
  });


  messageOne.textContent;
  messageTwo.textContent;
});

function currentSkycons(icon, iconID) {

  const currentIcon = icon.replace(/-/g, "_").toUppercase();
  skycons.play();
  return skycons.set(iconID, Skycons[currentIcon]);

}

, но чтобы использовать Skycons, мне нужно получить «значок» из API темного неба. как я могу получить эти данные помимо моего прогноза JS? Получить и присвоить эти данные переменной и использовать в другой функции

1 Ответ

0 голосов
/ 07 ноября 2019

Похоже, что объект data доступен только в ответе json, что означает, что вам потребуется доступ к forcast.icon, когда у вас есть ответ.

...