0
我有一個運行在Node.js 4.3中的Lambda函數。函數的輸入參數是一個String,它是從AWS Lex機器人發送的。來自DynamoDB的映射的值在Node.js中未定義
我想從DynamoDB表中獲取項目。在這個項目中,我有一個Map-type屬性,它包含一個String鍵和一個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
。
我能做些什麼來解決這個問題?