Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

120
Vistas
El middleware está rompiendo la configuración de redis/express

Estoy usando redis por primera vez, y no puedo entender por qué mi función de 'caché' de middleware está rompiendo mi código. Funciona muy bien sin él, se muestra en el navegador, si voy a mi terminal y busco un par de valores clave, funciona muy bien.

He aquí mi arreglo:

 const express = require("express"); const redis = require("redis"); const axios = require("axios").default; const PORT = process.env.PORT || 5000; const REDIS_PORT = process.env.PORT || 6379; const client = redis.createClient(REDIS_PORT); client.connect(); const app = express(); function setResponse(username, repos) { return `<h2>${username} has ${repos} Github repos</h2>`; } // make req to github async function getRepos(req, res, next) { try { console.log("fetching data..."); const { username } = req.params; const response = await axios.get( `https://api.github.com/users/${username}` ); const data = response.data; const repos = data.public_repos; // set to redis client.set(username, repos); res.send(setResponse(username, repos)); } catch (err) { console.log(err); res.status(500); } } // Cache middleware function cache(req, res, next) { const { username } = req.params; client.get(username, (err, data) => { if (err) throw err; if (data !== null) { res.send(setResponse(username, data)); } else { next(); } }); } app.get("/repos/:username", cache, getRepos); app.listen(5000, () => { console.log(`App listening on port ${PORT}`); });

¡Cualquier consejo sería muy apreciado!

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Su función de caché

 function cache(req, res, next) { const { username } = req.params; client.get(username, (err, data) => { if (err) throw err; if (data !== null) { res.send(setResponse(username, data)); } else { next(); } }); }

usa node redis 3 "lógica" por lo que está colgando

redis 4 está basado en promesas, por lo que debe usar async/await o .then/.catch

Así que algo como esto debería funcionar para el enfoque .then/.catch

 // Cache middleware function cache(req, res, next) { console.log('caching for', req.params); const { username } = req.params; client.get(username) .then((data) => { if (data !== null) { res.send(setResponse(username, data)); } else { next(); } }) .catch(err => { if (err) throw err; }); }

Esto resolverá su problema inicial de "por qué se atasca"

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda