私はNode.js 4.3で動作するラムダ関数を持っています。関数の入力パラメータは文字列で、AWS Lexボットから送信されます。DynamoDBからのマップの値はNode.jsで定義されていません
DynamoDBテーブルからアイテムを取得したいとします。このアイテムでは、Map型の属性があります。これには、StringキーとString値が含まれています。私は、関数の始めにパラメータとして得たキーストリングを使用して、そのマップから値を取得したいと思います。
問題は、私がコンソールにログを記録すると、私にはすべて{}
があることがわかります。
これは私のコードです:
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
です。
これを解決するにはどうすればよいですか?