Я использую 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);
});