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

161
Vistas
Problema de JavaScript/Express Promise.all()

Estoy creando un foro de discusión de películas simple. El usuario tiene un perfil donde puede ingresar sus películas favoritas separadas por una coma. La ruta de back-end llama a la API de OMDB y devuelve los objetos JSON para las películas en las que se mostrarán detalles como el póster, el título y otra información aplicable.

Creé una ruta de back-end usando Express para obtener la información. Logré obtener una sola película de OMDB y devolverla como un objeto JSON en Postman.

Sin embargo, cuando trato de mapear a través de la matriz de películas favoritas, el objeto devuelto está (o parece estar) vacío.

El siguiente código realiza una solicitud de obtención a '/movies', toma el middleware auth JWT creado y una devolución de llamada asincrónica req, res.

Se declara una variable de perfil para obtener el perfil del usuario por id.

Usando Promise.all() , se establece una variable de películas para mapear a través de toda la matriz profile.favouriteFilms y para cada película, devolver la información de la solicitud OMDB y luego res.json(films.data)

 router.get('/movies', auth, async (req, res) => { try { const profile = await Profile.findOne({ user: req.user.id }); const films = Promise.all( profile.favouritefilms.map((film) => axios.get( `http://www.omdbapi.com/?t=${film}&apikey=${config.get('OMDBkey')}` ) ) ); res.json(films.data); } catch (error) { console.error(error.message); res.status(500).send('Server Error'); } });

Como se indicó anteriormente, la salida en Postman está vacía.

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

0

Debe manejar el resultado de Promise.all con otro método .then(). Vea abajo:

 const profile = await Profile.findOne({ user: req.user.id }); const films = Promise.all( profile.favouritefilms.map((film) => axios.get( `http://www.omdbapi.com/?t=${film}&apikey=${config.get('OMDBkey')}` ) ) ).then(films => res.json(films.map(film => film.data))
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