Как использовать JavaScript, чтобы получить файл шаблона HTML из данных буфера S3? - PullRequest
1 голос
/ 29 мая 2020

У меня есть файл HTML, загруженный в корзину S3. Этот файл предназначен для использования в качестве шаблона для тела электронного письма.

Я использовал один из ответов на этот вопрос ( Прочитать файл из корзины aws s3 с использованием узла fs ), чтобы помочь мне вытащить файл из корзины. Теперь кажется, что у меня есть данные буфера, которые мне нужно преобразовать обратно в HTML, или строковая версия тоже подойдет. То, что я пробовал до сих пор, не сработало ...

Вот как выглядит мой код, получающий шаблон:

async getEmailTemplate() {
    const s3 = new AWS.S3({ apiVersion: '2006-03-01' });
    const params = {
      Bucket: 'myBucket',
      Key: 'templates/email.html',
    };
    const template = await s3.getObject(params).promise();
    return template;
}

Когда я регистрирую данные, возвращаемые «шаблоном», это выглядит так ... Мне нужно что-то вроде template.body.toString ('latin1') ...

console.log src/services/tests/unit/Controller.test.js:266
    {
      AcceptRanges: 'bytes',
      LastModified: 2020-05-28T19:36:23.000Z,
      ContentLength: 22745,
      ETag: '"1bcc123ba55b5b878109436c1274b94b"',
      ContentType: 'text/html',
      Metadata: {},
      Body: <Buffer 3c 21 44 4f 43 54 59 50 45 20 68 74 6d 6c 3e 0a 3c 68 74 6d 6c 20 78 6d 6c 6e 73 3a 76 3d 22 75 72 6e 3a 73 63 68 65 6d 61 73 2d 6d 69 63 72 6f 73 6f ... 22695 more bytes>
    }

Если это имеет значение, шаблон содержит js литералы шаблона, которые выглядят например, $ {data.firstName}. В настоящее время электронное письмо правильно заполняется и отправляется, когда шаблон жестко закодирован в файле javascript с окружающим его. Но я пытаюсь обновить код, чтобы вместо этого получить шаблон из внешнего источника.

Спасибо, что нашли время прочитать мой вопрос ... Есть ли у кого-нибудь предложения для меня? :)

1 Ответ

1 голос
/ 29 мая 2020

Если вы измените «body» на «Body», это должно сработать, вот старый код, который почти такой же, как ваш, и работает нормально:

 let { Body } = await s3.getObject(params).promise();
 return Body.toString(encoding)
...