Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

160
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda