我有一个Lambda函数,它在Node中运行。js 4.3。函数的输入参数是一个字符串,它是从AWS Lex bot发送的。
我想从DynamoDB表中获取一个项目。在这个项目中,我有一个映射类型属性,它包含一个字符串键和字符串值。我想使用我在函数开始时得到的键字符串作为参数,从该映射中获取一个值。
问题是,当我将地图记录到控制台时,我看到的只是
{}
var AWS = require('aws-sdk');
AWS.config.region = 'us-east-1';
var dynamodb = new AWS.DynamoDB();
const sessionAttributes = intentRequest.sessionAttributes;
const slots = intentRequest.currentIntent.slots;
const name = slots.names;
var id = null;
if (name == "a") {
id = "00";
} else if (name == "b") {
id = "01";
}
var params = {
TableName: 'names',
Key: {
'id' : {S: 'test-id'}
}
};
var names = {};
dynamodb.getItem(params, function(err, data) {
if (err) {
console.log(err); // an error occurred
} else {
names = data.Item.names.M;
}
});
console.log(names);
var content = names[id];
callback(close(sessionAttributes, 'Fulfilled',
{'contentType': 'PlainText', 'content': content}));
正如你所见,有一个
console.log
代码末尾的行。这行只记录
{}
undefined
.
我能做些什么来解决这个问题?