Un ejemplo muy pequeño
let value = null; const getValues = () => { fetch('/third-party-api') .then(res => res.json()) .then(data => { value = data; }) } getValues(); app.get("/values", async (req, res) => { res.json(value); });Cuando se implemente, funcionará. Pero después de una cantidad de tiempo x (a veces horas, a veces funcionará todo el día), el valor volverá a ser nulo. Estoy pagando por Heroku, por lo que el servidor nunca dormirá, y es por eso que no tiene sentido para mí por qué sucede esto.
¿Puedo de alguna manera evitar esto, para que el valor no vuelva a ser nulo?
Por qué estoy haciendo esto:
La API de terceros es enorme y tarda alrededor de 30 segundos en recuperarse. Así que simplemente creo esta pequeña API para agregar paginación y solo llamo al tercero en la compilación
Simplemente puede usar middleware en su ruta si usa este método específicamente en esta ruta. Puedes hacer algo como esto:
let value = null; const getValues = async (req, res, next) => { if (!value) { next(); } try { const res = await fetch('/third-party-api'); const resJson = JSON.parse(res); value = resJson; next(); } catch (e) { res.send({error: e}); } } // getValues(); remove this call app.get("/values", getValues ,async (req, res) => { res.json(value); });