NodeJS 我的代码需要JavaScript和API帮助:创建一个模块来查找特定城市的当前信息[关闭]

fzsnzjdm  于 2023-10-17  发布在  Node.js
关注(0)|答案(1)|浏览(87)

**已关闭。**此问题不符合Stack Overflow guidelines。它目前不接受回答。

这个问题似乎不是关于在help center定义的范围内编程。
6天前关闭
Improve this question

import fetch from 'node-fetch'

// Constants for API details
const GEO_API_URL = 'https://wft-geo-db.p.rapidapi.com/v1/geo/cities';
const WEATHER_API_URL = 'https://weatherbit-v1-mashape.p.rapidapi.com/current';

// Separate headers for the two APIs
const GEO_HEADERS = {
  'X-RapidAPI-Host': 'wft-geo-db.p.rapidapi.com',
  'X-RapidAPI-Key': '5470f285aemshd79624e8065945cp1df6d3jsn4b3dac9e4d7c'
};

const WEATHER_HEADERS = {
  'X-RapidAPI-Host': 'weatherbit-v1-mashape.p.rapidapi.com',
  'X-RapidAPI-Key': '5470f285aemshd79624e8065945cp1df6d3jsn4b3dac9e4d7c'
};

const getCityDetails = async(cityId) => {
  try {
    let response = await fetch(${GEO_API_URL}?cityId=${cityId}, {
      method: 'GET',
      headers: GEO_HEADERS
    });

    let data = await response.json();

    if (data.data && data.data.length > 0) {
      return data.data[0];
    } else {
      throw new Error('City not found');
    }

  } catch (error) {
    console.error(Error fetching city details: $ {error.message});
    throw error;
  }
};

const getWeatherDetails = async(latitude, longitude) => {
  try {
    let response = await fetch(${WEATHER_API_URL}?lat=${latitude}&lon=${longitude}, {
      method: 'GET',
      headers: WEATHER_HEADERS
    });

    let data = await response.json();

    if (data.data && data.data.length > 0) {
      return data.data[0];
    } else {
      throw new Error('Weather data not available');
    }

  } catch (error) {
    console.error(Error fetching weather details: $ {error.message});
    throw error;
  }
};

const getCityAndWeatherInfo = async(cityId) => {
  try {
    let cityDetails = await getCityDetails(cityId);
    let weatherDetails = await getWeatherDetails(cityDetails.latitude, cityDetails.longitude);

    return {
      population: cityDetails.population,
      elevation: cityDetails.elevationMeters,
      currentTemperature: weatherDetails.temp
    };
  } catch (error) {
    console.error(Error fetching combined data: $ {error.message});
  }
};

// Example usage
getCityAndWeatherInfo('Q5465')
  .then(data => {
    console.log(data);    
  });

问题如下:
创建一个模块,用于查找特定城市的当前信息。可以使用此API(https://rapidapi.com/wirefreethought/api/geodb-cities/)查找城市信息,包括坐标。

  • 我们将使用(node.js)Fetch
  • 你可以假设这个城市总是在南非。
  • 将显示以下详细信息:
    • 人口
    • 标高
  • 所有潜在的错误都应该得到适当的处理。

我订阅了上面的,因为我需要这样做。
代码中的一些东西不起作用,目前我不知道在哪里搜索问题了。

iecba09b

iecba09b1#

据我所知,“代码中的某些东西不起作用”,你的意思是代码没有正确编译,对吗?
由于控制台的原因,出现了编译错误。错误消息。您需要使用反引号``来在控制台错误消息中使用${}。

尝试更改此内容:

console.error(获取天气详细信息时出错:${error.message});

到这个:

console.log(获取城市详细信息时出错:${error.message});
您可以在这里了解更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals

相关问题