Estoy tratando de pasar datos simples de mi servidor a un archivo javascript llamado en otra página html. Estoy probando el envío de una sola cadena desde el servidor, pero no estoy seguro de cómo recibirla. Servidor a continuación:
const express = require('express') const app = express() const port = 3000 app.use(express.static("./assets")); app.get('/', (req, res) => { //res.send('Hello World!') res.sendFile('./main.html', { root: __dirname }); }) app.listen(port, () => { console.log(`Example app listening at http://localhost:${port}`) }) app.get('/get-test', async (_req, res) => { try { const test_string = "get-test request string"; return res.send(test_string); } catch (e) { throw e; } });Y en otro archivo javascript tengo lo siguiente:
async function testing() { const response = await fetch('/get-test'); console.log(response); } testing(); El console.log me da un objeto completo, y al hacer clic en él, parece que no puedo encontrar mi test_string ninguna parte:
Entonces, creo que la solicitud de get funcionó, pero ¿cómo accedo realmente a los datos que quiero?
Debe llamar await response.text() antes de console.log ing.
Así que en esta función:
async function testing() { const response = await fetch('/get-test'); console.log(response); } testing(); Deberá poner await dentro de console.log
así como esto:
async function testing() { const response = await fetch('/get-test'); console.log(await response); } testing();Dado que javascript es asincrónico al recuperar datos, habrá un retraso. Es por eso que implementaron async/await y promises. Entonces, cuando intente realizar una solicitud de obtención con fetch, deberá esperar la respuesta. Pero la respuesta también es una promesa, lo que significa que también deberá esperar la respuesta. Esto tiene más sentido, cuando intenta procesar la respuesta a, digamos, json.
Cuando el archivo console.log no devuelve ningún error, pero tampoco datos. Puede que sea por un problema de promesa