尝试在S3.putobject

时间:2017-06-06 00:49:40

标签: javascript amazon-web-services amazon-s3 aws-lambda aws-sdk

有点新的aws和javascript,我正在尝试实现以下功能,使用二进制支持上传照片,并在我的返回值上添加状态参数,稍后将在API网关中使用

var params = {
  Key: key,
  Body: image,
};
this.s3.putObject(params, function(err, data) {
  if (!err) {
    callback(null,{newValue: "This is my test value"});
  }
});

如果我注释掉回调行,代码工作正常,否则崩溃。  任何有关如何修复它的提示将不胜感激

2 个答案:

答案 0 :(得分:0)

呼叫结构应如here

所述
putObject(params = {}, callback)

您的代码可以是:

var params = {
  Key: key,
  Body: image,
};
var newValue = ""
this.s3.putObject(params, function(err, data) {
    if (!err) {
        this.newValue = "This is my test value";
    }
});

此处'function(错误,数据){}'代表'回调'

答案 1 :(得分:0)

Rajana是对的。补充一点:这是JS(或函数式编程)的核心功能。 putObject函数接受两个参数:params,一个包含参数的对象和callback,这是一个在putObject函数内完成时执行的函数。因此,您不要拨打callbackputObject来电callback

所以你创建一个函数,它作为putObject函数的函数参数。所以这也有效:

const params = { some: 'params'};
const fn = function(err) { console.log(err); }
this.s3.putObject(params, fn);

但是你也可以在参数中定义函数(使它成为一个匿名函数),你在你的例子中做了什么。