const axios = require('axios');
const url = '';
const urlMovies = 'http://localhost:3001/'
const axiosServer = axios.create({
  baseURL: url,
});

class EntertainMeController {
  static readEntertainMe(req, res) {    
    let movies;
    let tvseries;

    axiosServer({
      url: urlMovies,
      method: 'get',
    })
    .then(({ data }) => {
      movies = data;
    }

   res.status(200).json({
    movies
   })
 }

}

Escribo este código dentro de los controladores, las películas router.get ('/', EnternainMeController.read EntertainMent) no están definidas, cualquier ayuda por favor

0
Yudha Arief Wijaya 19 jun. 2020 a las 10:23

3 respuestas

La mejor respuesta

Pruébalo así:

  static async readEntertainMe(req, res) {    
    let movies;
    let tvseries;

   let { data } = await axiosServer({
      url: urlMovies,
      method: 'get',
   })
   movies = data;
   res.status(200).json({
     movies
   })
0
Ifaruki 19 jun. 2020 a las 07:34

Una respuesta: utilice var movies en lugar de let movies .

Explicado: es una cuestión de alcance léxico que se puede manejar con cierres. Necesita acceso al alcance de la función externa. Un cierre es la combinación de una función agrupada (encerrada) con referencias a su estado circundante (el entorno léxico). En otras palabras, un cierre le da acceso al alcance de una función externa desde una función interna. En JavaScript, los cierres se crean cada vez que se crea una función, en el momento de creación de la función. https://developer.mozilla.org/en-US/docs/ Web / JavaScript / Cierres

0
Umair Anwar 19 jun. 2020 a las 08:04

Intente agregar res.status dentro del bloque. Luego, el bloque se ejecutará de forma asíncrona desde el flujo del código principal.

Además, si esto ayuda, puede eliminar la variable de películas.

axiosServer({
  url: urlMovies,
  method: 'get',
})
.then(({ data }) => {
  movies = data;
  res.status(200).json({
    movies
  })
}
0
simmmplyAmit 19 jun. 2020 a las 07:38