El siguiente código siempre devuelve el siguiente objeto cableado
{"_U": 0, "_V": 0, "_W": nulo, "_X": nulo}
como respuesta
Aquí está mi código
getData = () => { fetch('http://192.168.64.1:3000/getAll',{ method: 'GET', headers: { Accept: 'application/json', 'Content-Type': 'application/json' } }) .then((response) => { console.log('Response:') console.log(response.json()) console.info('=================================') }) .catch(err => console.error(err)); } componentDidMount(){ this.getData(); }Estoy usando node, express, Mysql como backend y frontend nativo de reacción
mi código de fondo está aquí
app.get('/getAll',(req,res) => { console.log('getAll method Called'); con.query('select * from dummy',(err,results,fields) => { if(err) throw err; console.log('Response'); console.log(results); res.send(results); }); });El código anterior proporciona un resultado correcto en la consola, pero la API de recuperación no lo es.
No puedo encontrar la solución para mi problema. Gracias por adelantado.
Entonces, el problema es que no está esperando que se resuelva su Promesa y esto se puede resolver fácilmente.
try { const res = await fetch( 'your_api', ); const data = await res.json(); } catch (error) { console.log(error); }Eso indica que está registrando la promesa antes de que se resuelva, el resultado de cuando: console.log(response.json())
¿Cómo accedo al valor de devolución de llamada prometido fuera de la función?
Como @Evert señaló correctamente en los comentarios, esto se debe a que response.json() devuelve un objeto de promesa.
Por lo tanto, deberá encadenar un .then() adicional después de llamar a response.json() donde registra la promesa resuelta.
getData = () => { fetch('http://192.168.64.1:3000/getAll',{ method: 'GET', headers: { Accept: 'application/json', 'Content-Type': 'application/json' } }) .then(response => response.json()) .then(data => { console.log(data); }) .catch(err => console.error(err)); }Agregue async y espere a su código:
getData = async () => { await fetch('http://192.168.64.1:3000/getAll',{ method: 'GET', headers: { Accept: 'application/json', 'Content-Type': 'application/json' } }) .then((response) => { console.log('Response:') console.log(response.json()) console.info('=================================') }) .catch(err => console.error(err)); }