Как прочитать буфер в строку из запроса nodejs - PullRequest
0 голосов
/ 27 марта 2020

Я использую Nest JS и без сервера. Я читаю исходный код и вижу, что event.body из безсерверного обработчика будет проанализирован в Buffer, а затем отправлен на NodeJs сервер следующим образом:

function forwardRequestToNodeServer (server, event, context, resolver) {
  try {
    const requestOptions = mapApiGatewayEventToHttpRequest(event, context, getSocketPath(server._socketPathSuffix))
    const req = http.request(requestOptions, (response) => forwardResponseToApiGateway(server, response, resolver))
    if (event.body) {
      const body = getEventBody(event)
      req.write(body)  // <-------------------- This line 
    }

    req.on('error', (error) => forwardConnectionErrorResponseToApiGateway(error, resolver))
      .end()
  } catch (error) {
    forwardLibraryErrorResponseToApiGateway(error, resolver)
    return server
  }
}

Это getEventBody функция.

function getEventBody (event) {
  return Buffer.from(event.body, event.isBase64Encoded ? 'base64' : 'utf8')
}

В моем случае req.write(body) выше - это изображение для загрузки.

Затем в контроллере Nodejs я бы хотел получить это изображение. Я пытаюсь проанализировать Buffer для строки base64, но не работает.

data = []
req.on("data", function(chunk) {
  data.push(chunk); // Append Buffer object
  console.log(chunk)
}).on("end", function() {
  const data1 = Buffer.concat(data).toString(); // <----- could not goes here
  console.log(data1)
}).on('error', (err) => {
  console.error(err.stack);
});
...