Hola a todos estoy haciendo un axios puesto para actualizar mis datos. Sin embargo, estoy recibiendo una respuesta indefinida. Gracias de antemano
función que llama a los Axios:
export function exUpdateMovie(movie) { Axios.put(baseURL + "/api/update", { movieName: movie.movieName, movieReview: movie.movieReview, id: movie.id, }) .then((response) => { // console.log(response); return response; }) .catch((e) => { console.log(e); return e; }); }función en app.js que llama a la función exUpdateMovie(película):
const handleUpdateMovie = (movie) => { console.log("UpdateMovie Passed!"); try { const res = exUpdateMovie(movie); alert(res?.data); } catch (error) { console.log(error); } };Salida cuando alerto mi respuesta es: indefinido
ASENTARSE:
handleUpdateMoviereturn Axios.put()Saludos compañero por ayudarme. Muchas gracias
Sí, porque su llamada API está devolviendo una promesa en la que debe esperar hasta que se complete la ejecución de la promesa, así que haga que su función sea asíncrona y ajuste la llamada API con await.
export async function exUpdateMovie(movie) { const result = await Axios.put(baseURL + "/api/update", { movieName: movie.movieName, movieReview: movie.movieReview, id: movie.id, }) return result } const handleUpdateMovie = async (movie) => { console.log("UpdateMovie Passed!"); try { const res = await exUpdateMovie(movie); alert(res?.data); } catch (error) { console.log(error); } };Porque exUpdateMovie no devuelve nada. Devolver la promesa:
export function exUpdateMovie(movie) { return Axios.put(/* all your Axios code */); }Luego, cuando consuma el resultado, trátelo como una Promesa:
exUpdateMovie(movie).then(res => { alert(res?.data); });por favor, coloque return fuera de axios porque cuando coloca return dentro de las funciones, entonces o lo atrapa, regresa desde allí y fuera de axios no hay retorno, puede hacerlo como se muestra a continuación:
export function exUpdateMovie(movie) { var resultInfo = {}; Axios.put(baseURL + "/api/update", { movieName: movie.movieName, movieReview: movie.movieReview, id: movie.id, }) .then((response) => { // console.log(response); resultInfo = response; }) .catch((e) => { console.log(e); resultInfo = e; }); return resultInfo; }o puedes usar este código:
export function async exUpdateMovie(movie) { var resultInfo = await Axios.put(baseURL + "/api/update", { movieName: movie.movieName, movieReview: movie.movieReview, id: movie.id, }) return resultInfo; }