有点新的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"});
}
});
如果我注释掉回调行,代码工作正常,否则崩溃。 任何有关如何修复它的提示将不胜感激
答案 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
函数内完成时执行的函数。因此,您不要拨打callback
,putObject
来电callback
。
所以你创建一个函数,它作为putObject
函数的函数参数。所以这也有效:
const params = { some: 'params'};
const fn = function(err) { console.log(err); }
this.s3.putObject(params, fn);
但是你也可以在参数中定义函数(使它成为一个匿名函数),你在你的例子中做了什么。