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
无法正常工作,未调用回调函数。我已经完全拥有此用户的 Angular 色,但仍未调用函数。 最佳答案
假设您正在使用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;
};