Прочтите тело обещания о получении

Я уверен, что у этого есть простой ответ, но для жизни я не могу понять, как это сделать.

У меня есть следующая экспресс-конечная точка для загрузки в хранилище Google Cloud. Он отлично работает, и ответ от google api дает мне уникальное имя файла, которое я хочу передать обратно в свой интерфейс:

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;
});

Я добираюсь до этой конечной точки, вызывая короткую функцию, которая передает файл ей:

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

const Client = { upload };
export default Client;

Эта функция вызывается из моего интерфейса следующим образом:

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

Этот final console.log(data) регистрирует ответ на консоль. Тем не менее, я не вижу в любом случае ответа, который я написал ("Unique File Name:" + file.name)

У кого-нибудь есть предложения по тому, как я могу получить эту информацию из тела ответа на стороне клиента?

РЕДАКТИРОВАТЬ:

data выглядят так, когда я console.log:

Screenshot of the data console.log

EDIT 2:

Это ответ, который я получаю, когда я отправляю файл в свою конечную точку, используя Postman: Screen shot of response using Postman

Ответы

Ответ 1

Обратите внимание, что вы имеете дело с объектом Response. Вам нужно в основном прочитать поток ответов с Response.json() или Response.text() (или с помощью других методов), чтобы просмотреть ваши данные. В противном случае тело ответа всегда будет отображаться как заблокированный читаемый поток. Например:

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

Если это дает неожиданные результаты, вы можете проверить свой ответ с помощью Postman.

Ответ 2

@GabeRogan дал мне ответ (и у меня была опечатка, как и ожидалось)

Здесь мой обновленный код для переднего конца, который возвращает текст основного ответа:

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

body - строка, которая гласит: "Уникальное имя файла: [FILE-NAME]"

РЕДАКТИРОВАТЬ:

Вот хорошее объяснение API-интерфейса Fetch и чтение ответа, полученного с объекта обещания: https://css-tricks.com/using-fetch/