我正在使用chrome浏览器,当我单击屏幕右上角的“测试”按钮时,lambda函数似乎会触发1-3次,我无法弄清楚为什么会发生这种情况。
我尝试将参数直接放入dynamoDB.get调用中,并进行了一段时间的搜索,并尝试查找存在类似问题的人员。我发现有一些接近,但没有一个谈论使用内置测试按钮时多次触发单个函数。我也尝试过使通话异步并等待它,但是都无济于事。
AAAAAABBBBBBBSDSDDSDSDCCCCHEY
我希望该函数仅调用一次,但是更经常地在“执行结果”区域中将相同的内容打印2-3次
// Import Libraries
const aws = require('aws-sdk');
const dynamoDB = new aws.DynamoDB.DocumentClient();
aws.config.update({
region: "us-east-1"
});
// Get Document
exports.handler = async (event, context) => {
let params = {
TableName: event.TableName,
Key: {
uuid: event.uuid
}
};
return await dynamoDB.get(params, function(error, data){
if(error){
console.error("Error", error);
}
else{
console.log("Data: ", data);
}
}).promise();
};
答案 0 :(得分:2)
您要提供一个回调方法,您是在同一API调用中请求一个Promise。
您不应该两者都做。我建议删除回调,例如:
exports.handler = async (event, context) => {
const params = {
TableName: event.TableName,
Key: {
uuid: event.uuid
}
};
try {
const data = await dynamoDB.get(params).promise();
console.log("Data: ", data);
} catch(error) {
console.error("Error:", error);
}
};