Здравствуйте, спасибо, что взглянули на это.
У меня есть запланированная функция, которая связывается с API и должна сохранять данные в локальной БД. Он работает несколько раз, а затем перестает сохранять. Я подтвердил, что функции выполняются в запланированное время. Пн goose не сохраняет данные и не выдает ошибку.
запрос на 2 части:
Мне бы очень хотелось, чтобы я попытался поймать и записать ошибку. -Может быть, мои логгеры находятся в неправильном месте?
Кроме того, если у вас есть какие-либо идеи о том, почему он работает, когда я запускаю сервер, а затем в конечном итоге перестает работать, что будет ценится также. -Может, я не «возвращаю» функции должным образом?
Получить данные из API:
function updateWeather(){
const weatherurl = 'https://api.aerisapi.com/observations/pendleton,or?&format=json&filter=allstations&limit=1&client_id=bRZUxQc8j4z41CrH7SM6u&client_secret=GaEA7lMyLKnQwRsUcxv1mnNhTUkx6KUtVsrIXVcR';
axios.get(weatherurl)
.then(response=>{
// console.log(response.data);
let condition = response.data.response.ob.weather,
temp = response.data.response.ob.tempF,
windDir = response.data.response.ob.windDir,
windSpd = response.data.response.ob.windSpeedMPH,
windGust = response.data.response.ob.windGustMPH,
windChill = response.data.response.ob.windchillF,
humidity = response.data.response.ob.humidity,
icon = response.data.response.ob.icon,
date = moment().utcOffset(-8).format('YYYY-MM-DD'),
updated = moment().utcOffset(-8).format('MM/DD/YY HH:mm');
if(temp <= 35){
var tempIcon = 'https://cdn.aerisapi.com/wxicons/v2/cold.png';
}else if(temp >= 80){
var tempIcon = 'https://cdn.aerisapi.com/wxicons/v2/hot.png';
}else{
var tempIcon = '';
}
currentWeather.push({date:date, condition:condition, temp:temp, windChill:windChill, windDir:windDir, windSpd:windSpd, windGust:windGust, humidity:humidity, icon:icon, tempIcon:tempIcon, updated:updated});
return currentWeather[0]
}).then(currentWeather=>{
// console.log(currentWeather);
saveWeather(currentWeather);
}).catch(error=>{
logger.error(error);
});
return currentWeather;
}
Сохранить данные в БД:
function saveWeather(weather){
logger.info('saveWeather connection status: '+mongoose.connection.readyState);
if(mongoose.connection.readyState !== 1){
mongoose.connect("mongodb://localhost:27017/fdData", {useNewUrlParser: true});
}
Weather.updateOne({date: weather.date}, {date:weather.date, condition:weather.condition, temp:weather.temp, windChill:weather.windChill, windDir:weather.windDir, windSpd:weather.windSpd, windGust:weather.windGust, humidity:weather.humidity, icon:weather.icon, tempIcon:weather.tempIcon, updated:weather.updated}, {upsert:true}, error=> {
if (error){
logger.error(error);
} else{
logger.info('Weather Saved to DB')
}
})
return weather;
}
Еще раз спасибо!
-Адам