Я работаю над проектом для курса, где мне нужно объединить несколько вызовов API вместе. В настоящее время все в первой функции вызова API выполняется и отображается в терминале, но все после первого вызова API ничего не делает. Я принимаю пользовательский ввод местоположения и даты в форме. Первый вызов API работает. Он преобразует местоположение в широту и долготу, а затем разделяет дату (ММ / ДД / ГГГГ) на три переменные: месяц, дату и год и сохраняет их в моем объекте projectData, который я затем должен использовать для второго вызова API. Проблема в том, что после того, как первая функция вызова API выполняется и сохраняет все в объекте projectData, все, что после этого ничего не делает. Я пытаюсь зарегистрировать новый объект projectData со всей сохраненной информацией из первого вызова API, но я не вижу его зарегистрированным в терминале. Затем я пытаюсь извлечь вновь сохраненные данные из 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)
функция geonames:
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 выполнить?
Большое спасибо, Майкл