Привет У меня есть маршрутизатор, определенный в Node.js, который основан на экспрессе, использующем асинхронный вызов:
const service = new YoutubeService();
router.get('/', async function(req, res) {
const trends = await service.getTrendingVideos();
console.log(trends);
res.render('youtube/index', {
title: config.title,
videos: trends
});
});
Мой служебный файл выглядит так:
export class YoutubeService {
getTrendingVideos() {
var params = {
part: 'snippet',
chart: 'mostPopular',
regionCode: 'US', // should be replaced with country code from countryList
maxResults: '24',
key: config.youtubeApi.key
};
var result = [];
return axios.get('/', {params}).then(function(res){
result = res.data.items;
for (var i = 0; i < result.length; i++) {
result[i] = {
id: result[i].id,
title: result[i].snippet.title,
thumbnail: result[i].snippet.thumbnails.high.url,
publishedAt: moment(result[i].snippet.publishedAt).fromNow()
};
result[i] = YoutubeService.getVideoDetails(result[i]);
}
return result;
});
}
static getVideoDetails(video) {
var params = {
part: 'statistics',
id: video.id,
key: config.youtubeApi.key
};
return axios.get('/', {params}).then(function(res) {
var result = res.data;
video.viewCount = result['items'][0].statistics.viewCount;
video.likeCount = result['items'][0].statistics.likeCount;
return video;
});
}
}
Проблемаэто то, что сначала, когда я работаю с консолью по трендам, она всегда печатает <promise> ...
, как это, и не обновляет данные, а просто показывает пустые записи в html.
Когда я делаю console.log внутри метода get axios, он печатаетданные.Означает, что данные поступают, но не обновляются до моей асинхронной функции.
Любая помощь будет признательна?