【发布时间】:2020-06-23 21:46:22
【问题描述】:
我正在为一个需要将多个 API 调用链接在一起的课程项目工作。目前,第一个 API 调用函数中的所有内容都执行并显示在终端中,但第一个 API 调用之后的所有内容都没有执行任何操作。我正在以表格形式接受用户输入的位置和日期。第一个 API 调用有效。它将位置转换为纬度和经度,然后将日期(MM/DD/YYYY)分成三个变量,月、日和年,并将它们存储在我的 projectData 对象中,然后我需要使用它来进行第二次 API 调用。问题是,在第一个 API 调用函数执行并将所有内容存储到 projectData 对象之后,之后的所有内容都没有执行任何操作。我尝试使用第一次 API 调用中存储的所有信息记录新的 projectData 对象,但我没有看到它记录在终端中。然后我尝试从 projectData 中提取新存储的数据并在第二个 API 调用函数中使用它,但它什么也没做。这是相关代码:
GEONAMES_API = process.env.GEONAMES_ID
darksky_key = process.env.DARKSKY_KEY
console.log(darksky_key)
console.log(GEONAMES_API);
projectData = {one: {coord: {lat: '', lng: ''}, date: ''}, two: {month: '', day: '', year: ''}, three: {}};
place = {};
app.post('/postData', getData);
function getData(req, res){
console.log(req.body.data);
place = req.body.data.place;
date = req.body.data.date;
projectData.one.date = date;
console.log(projectData)
console.log(date)
console.log(place)
geonames(place, GEONAMES_API)
console.log(projectData)
lat = projectData.one.coord.lat;
lng = projectData.one.coord.lng;
month = projectData.two.month;
day = projectData.two.day;
year = projectData.two.year;
darkskyFetch(lat, lng, month, day, year, darksky_key)
地名功能:
function geonames(place, id){
fetch(`http://api.geonames.org/searchJSON?name=${place}&username=${id}`)
.then(response => response.json())
.then(data => {
console.log(data)
lng = data.geonames[1].lng
lat = data.geonames[1].lat
console.log(lng)
console.log(lat)
projectData.one.coord.lat = lat;
projectData.one.coord.lng = lng;
console.log(projectData)
console.log(projectData)
lat = projectData.one.coord.lat;
lng = projectData.one.coord.lng;
date = projectData.one.date;
console.log(lat)
console.log(lng)
date_split = date.split("/")
console.log(date_split)
month = date_split[0]
day = date_split[1]
year = date_split[2]
console.log(month)
console.log(day)
console.log(year)
projectData.two.month = month;
projectData.two.day = day;
projectData.two.year = year;
console.log(projectData)
})
.catch(error => error)
}
darkskyFetch 函数:
function darkskyFetch(lat, lng, month, day, year, darksky_key){
fetch(`https://api.darksky.net/forecast/${darksky_key}/${lat},${lng},${year}-${month}-${day}`)
.then(response => response.json())
.then(data => {
console.log(data)
})
.catch(error => eerror)
}
如何在 geonames 函数执行后获取所有代码?
非常感谢, 迈克尔
【问题讨论】:
标签: javascript node.js api express node-fetch