tag page attribute javascript node.js fetch-api

javascript - page - Lee el cuerpo de una promesa Fetch



title html (2)

Estoy seguro de que esto tiene una respuesta simple, pero por mi vida no puedo averiguar cómo hacerlo.

Tengo el siguiente extremo expreso para cargar en Google Cloud storage. Funciona muy bien y la respuesta de la API de Google me da un nombre de archivo único que quiero devolver a mi interfaz:

app.post(''/upload'', (req, res) => { var form = new formidable.IncomingForm(), files = [], fields = []; form .on(''field'', function(field, value) { fields.push([field, value]); }) .on(''file'', function(field, file) { files.push([field, file]); }) .on(''end'', function() { console.log(''-> upload done''); }); form.parse(req, function(err, fields, files){ var filePath = files.file.path; bucket.upload(filePath, function(err, file, apiResponse){ if (!err){ res.writeHead(200, {''content-type'': ''text/plain''}); res.end("Unique File Name:" + file.name); }else{ res.writeHead(500); res.end(); } }); }); return; });

Llego a este punto final llamando a una función corta que le pasa el archivo:

function upload(file) { var data = new FormData(); data.append(''file'', file); return fetch(`upload`,{ method: ''POST'', body: data }); } const Client = { upload }; export default Client;

Esta función se llama desde mi extremo frontal de esta manera:

Client.upload(this.file).then((data) => { console.log(data); });

Este console.log(data) final console.log(data) registra la respuesta a la consola. Sin embargo, no veo en ninguna parte la respuesta que escribí ( "Unique File Name:" + file.name )

¿Alguien tiene alguna sugerencia sobre cómo puedo recuperar esta información del cuerpo de respuesta en el lado del cliente?

EDITAR:

La data ve así cuando la consojo.

EDIT 2:

Esta es la respuesta que obtengo al enviar un archivo a mi punto final usando Postman:


@GabeRogan me dio la respuesta (y tuve un error tipográfico, como se esperaba)

Aquí está mi código actualizado para el extremo delantero que devuelve el texto del cuerpo de la respuesta:

Client.upload(this.file).then(response => response.text()) .then((body) => { console.log(body); });

body es una cadena que dice "Nombre de archivo único: [NOMBRE DE ARCHIVO]"

EDITAR:

Aquí hay una buena explicación de la API de Fetch y la lectura de la respuesta que obtiene del objeto de promesa: https://css-tricks.com/using-fetch/


Observe que está tratando con un objeto de Respuesta . Básicamente, debe leer la secuencia de respuestas con Response.json() o Response.text() (o mediante otros métodos) para ver sus datos. De lo contrario, su cuerpo de respuesta siempre aparecerá como un flujo legible bloqueado. Por ejemplo:

fetch(''https://api.ipify.org?format=json'') .then(response=>response.json()) .then‌​(data=>{ console.log(data); })

Si esto le proporciona resultados inesperados, es posible que desee inspeccionar su respuesta con Postman .