nodejs как получить JSON вместо Buffer из aws s3 bucket - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть файл. json, сохраненный в S3 Bucket, теперь я хочу загрузить файл json с nodejs. Я написал следующий код:

const bucket = "s3bucketname";

const AWS = require('aws-sdk');
const S3= new AWS.S3();
exports.handler = async (event, context, callback) => {
    var transcript = await download();
    console.log(transcript);
}

async function download(){
  try {
    // Converted it to async/await syntax just to simplify.
    const data = await S3.getObject(
    {   Bucket: bucket, 
        Key: "Test.json",
        //ResponseContentType: 'application/json'
    }).promise();

    console.log(data);
    return {
      statusCode: 200,
      body: JSON.stringify(data)
    }
  }
  catch (err) {
    return {
      statusCode: err.statusCode || 400,
      body: err.message || JSON.stringify(err.message)
    }
  }
}

Мой ответ выглядит так: AcceptRanges: 'байты', LastModified: 2020-02-07T08: 04: 25.000Z, ContentLength: 12723, ETag: '' ea7de645f93c45b3jkj4e7ffjdsf " ', ContentType:' application / octet-stream ', Метаданные: {}, Body: Buffer 7b 0d ...

В теле я получаю буфер из моего JSON, если я конвертирую его с помощью инструментов как: https://onlineutf8tools.com/convert-bytes-to-utf8

Я получаю JSON строку, как я хочу. Как я могу сделать это в Javascript / nodejs? Мне не нужен буфер, мне нужно JSON в строке. Я пробовал разные способы, но это еще не сработало.

1 Ответ

0 голосов
/ 11 февраля 2020

Вам нужно сделать data.Body.toString('utf-8'), чтобы получить правильную json (строковую версию) из буфера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...