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
3 respuestas
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
})
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
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
})
}
Preguntas relacionadas
Nuevas preguntas
express
Express es un marco de aplicación web Node.js mínimo y flexible que proporciona un conjunto sólido de funciones para crear aplicaciones web.