Имеется следующий node.js-код для получения последних четырех постов из instagram и последующей отдачи на фронт:
router.get('/media/latest', async (req, res) => {
await connect();
const user = await client.getUserByUsername({ username: 'username' });
const posts = user.edge_owner_to_timeline_media.edges;
const latestPosts = posts.slice(0, 4);
const latestPostsShortcodes = latestPosts.map(post => post.node.shortcode);
let foundPosts = await InstagramPost.find({ shortcode: latestPostsShortcodes }) as any;
let foundCodes = foundPosts.map(post => post.shortcode);
const codesToFetch = latestPostsShortcodes.filter(code => {
return !foundCodes.includes(code);
});
if (codesToFetch) {
let media = await getInstagramPosts(codesToFetch);
media.forEach(post => {
foundPosts.push({
text: post['edge_media_to_caption']['edges'][0]['node']['text'],
href: `https://instagram.com/p/${post['shortcode']}`,
shortcode: post['shortcode'],
img: post['display_url']
});
});
}
savePostsToDb(foundPosts);
res.send({ media: foundPosts });
});
Необходимо реализовать следующий функционал: если прошло больше суток - обновлять посты и отдавать новые посты на фронт. Я предположил, что это можно выполнить следующим путем:
- вычисляем разницу между текущим моментом времени и временем последнего запроса;
- если прошел промежуток времени в 24 часа - обновляем посты (то есть проделываем все действия до res.send())
Однако не вполне понятно - как реализовать вышеуказанный алгоритм?