Salut !
Je suis en train de faire un blog avec une architecture comme suit : j'ai un compte tumblr sur lequel je poste le contenu du blog, que je récupère à l'aide de leur API REST sur une app hébergée sur Heroku. L'application prend ces données et en fait une API GraphQL (+express), que je récupère en AJAX sur le site statique hébergé sur GitHub Pages.
Maintenant, si je publie un nouveau post sur tumblr, puis que je lance le serveur Node, puis ma page web, tout marche bien. En revanche, quand je publie à nouveau un post, il faut que je relance le serveur.
Du coup je me suis dit "je fais un setInterval sur la requete à l'api Tumblr" :
function makeRequest() {
client.blogPosts('monblog.tumblr.com', { filter: 'html' }, function (err, data) {
const posts = data.posts;
console.log('\nLast post -->', posts[0].title);
const resolvers = {
Query: {
posts: () => posts.filter( post => post.type === "text" )
}
};
const schema = makeExecutableSchema({
typeDefs,
resolvers,
});
app.use('/graphql', bodyParser.json(), graphqlExpress({ schema }));
});
}
app.use('/graphiql', graphiqlExpress({ endpointURL: '/graphql' }));
makeRequest();
const requestLoop = setInterval(makeRequest , 30000);
Le console.log()
au début de la fonction me renvoie chaque 30 secondes le titre du dernier post, c'est parfait. En revanche, les données que me renvoie mon endpoint '/graphql' n'évoluent pas !
Dans ma console je vais avoir :
Last post --> ceci est un post
Last post --> un autre post
Last post --> encore un
Mais dans graphiql, quand je relance la requete ou que je recharge la page, rien ne change.
C'est très bizarre parce-que je redéfinis mes variables à chaque fois que makeRequest() est apellée...
Des idées ? Je suis sur que c'est tout con !
Merci d'avance :)