如何从Node.Js中的回调函数返回数据

时间:2017-07-21 04:51:46

标签: node.js amazon-web-services amazon-s3

我正在尝试创建一个函数,该函数返回来自AWS的错误数据或{ETag:'" 74 ..."'来自回调的数据响应。此代码当前将我的缓冲区文件写入s3存储桶。但我想从函数返回我的etag号码或错误数据,但我一直未定义。任何帮助将不胜感激。

function aws(file, name) {
  var s3 = new AWS.S3();
  s3.putObject({
    Bucket: 'Bucket-Name',
    ACL: 'public-read',
    Key: name,
    Body: file
  }, function(err, data) {
    if (err) {
      console.log('Something went wrong')
      return err;
    } else {
      console.log('Successfully uploaded image');
      console.log(data);
      return data;
    }
  });
}

var response = aws(buffer, 'file.png');

1 个答案:

答案 0 :(得分:1)

用Promise解决了我的问题。希望有一天能帮助别人:)

const aws = function (file, name) {

  return new Promise((resolve, reject) => {
    let s3 = new AWS.S3();
    s3.putObject({
      Bucket: 'Bucket-Name',
      ACL: 'public-read',
      Key: name,
      Body: file
    }, function (err, data) {
      if (err) {
        console.log('Something went wrong')
        reject(err);
      } else {
        console.log('Successfully uploaded image');
        resolve(data);
      }
    });
  });

}

aws(buffer, 'file.png')
    .then(response => {
        res.set({ 'Content-Type': 'application/json' });
        res.status(200);
        res.send(response);
    })
    .catch(console.error);