const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'});
exports.handler = async (event) => {
var note = {};
note.noteid = new Date().getTime();
note.content = event.queryStringParameters["content"];
var res = {};
const response = {
statusCode: 200,
body: JSON.stringify(note),
};
var obj = {
'TableName':'notes',
'Item': {
'note_id': {
S: '2'
},
'name': {
S: 'content'
}
},
'ReturnConsumedCapacity': "TOTAL"
};
dynamodb.putItem(obj, function(err,result){
console.log('function called!!');
console.log(err);
return response;
});
};
我的putItem
无法正常工作,没有调用回调函数。我已经拥有对该用户角色的完全访问权限,但仍未调用函数。
答案 0 :(得分:3)
假设您正在使用AWS Lambda。由于您使用的是async
/ await
模式,因此http响应最终是async (event) => {}
返回的内容。就您而言,那不算什么。您打电话给putItem
,但没有等待。 async (event) => {}
之后不返回任何内容。由于函数已返回,因此您的putItem
调用没有回调的机会。
您应该将putItem
调用转换为promise
和await
。然后处理结果并返回http响应。
const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'});
exports.handler = async (event) => {
var note = {};
note.noteid = new Date().getTime();
note.content = event.queryStringParameters["content"];
var res = {};
const response = {
statusCode: 200,
body: JSON.stringify(note),
};
var obj = {
'TableName':'notes',
'Item': {
'note_id': {
S: '2'
},
'name': {
S: 'content'
}
},
'ReturnConsumedCapacity': "TOTAL"
};
try
{
var result = await dynamodb.putItem(obj).promise();
//Handle your result here!
}
catch(err)
{
console.log(err);
}
return response;
};