Обратные вызовы S3 игнорируются - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь загрузить кодированное в base64 изображение на S3 по этому маршруту, но обратные вызовы полностью игнорируются, и код переходит прямо к res.json("SUCCESS");

маршруту


AWS.config.update({
  accessKeyId: "xxxxxxxxxxxxxx",
  secetAccessKey: "xxxxxxxxxxxxxxxxxxxxxx",
  region: "us-east-1"
});
const s3 = new AWS.S3();

....


router.post("/imageupload", async (req, res) => {

  const base64 = req.body.base64;
  try {
    const params = {
      Bucket: process.env.bucketName,
      Key: "images/newImage",
      Body: base64
    };

    await s3.putObject(params, function(err, data) {
      if (err) res.json(err);
      else res.json(data);
    });
    res.json("SUCCESS");
  } catch (e) {
    console.log(e.message);
    res.status(500).json(e.message);
  }
});

Спасибо за любую помощь, спасибо!

РЕДАКТИРОВАТЬ ИСПРАВЛЕНО: Я выяснил, в чем проблема: я недавно переформатировал свой компьютер, что означало, что мне пришлось переустановить AWS cli И перенастроить aws creds. Вот и все.

1 Ответ

1 голос
/ 08 января 2020

Документация AWS для использования-обещаний .

var s3 = new AWS.S3({apiVersion: '2006-03-01', region: 'us-west-2'});
var params = {
  Bucket: 'bucket',
  Key: 'example2.txt',
  Body: 'Uploaded text using the promise-based method!'
};
var putObjectPromise = s3.putObject(params).promise();
putObjectPromise.then(function(data) {
  console.log('Success');
}).catch(function(err) {
  console.log(err);
});

Вы также можете обещать все функции с помощью библиотеки, например bluebird

AWS.config.setPromisesDependency(require('bluebird'));

Вот пример использования вашего кода

router.post("/imageupload", async (req, res) => {

    const base64 = req.body.base64;
    try {
      const params = {
        Bucket: process.env.bucketName,
        Key: "images/newImage",
        Body: base64
      };

      const data = await s3.putObject(params).promise()
      res.json(data);
    } catch (e) {
      console.log(e.message);
      res.status(500).json(e.message);
    }
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...