问题描述
我正在尝试使用AWS Lambda函数从DynamoDb中提取并显示数据,并将其显示在AWS Lex上。它在数据应放置的地方返回带有单词“ undefined”的if部分。该信息在DynamoDB数据库中。我主要使用AWS服务器并构建此无服务器Lex bot应用程序。
AWS代码段
const AWS = require('aws-sdk');
const db = new AWS.DynamoDB.DocumentClient({region: 'us-east-1'});
exports.handler = async (event) => {
// Todo implement
const response = {
statusCode: 200,body: JSON.stringify('Hello from Lambda!'),};
return response;
};
function getExamSchedule(exam2,table){
return new Promise(function(resolve){
var info = 0;
var params = {
TableName: table,FilterExpression: "#key = :data",ExpressionAttributeNames: {
"#key": "Resource",},ExpressionAttributeValues:{
":data": exam2
}
};
db.scan(params,function(err,data){
if(err){
console.log("Error: " + err);
info = 0;
} else {
console.log("Success",data);
info = {"ClassID" :data.Items[0].ClassID,"ExamDate " :data.Items[0].ExamDate,"ExamEndTime:" :data.Items[0].ExamEndTime,"ExamLocation" :data.Items[0].ExamLocation,"ExamStartTime" :data.Items[0].ExamStartTime};
}
resolve(info);
});
});
}
这是可能发生问题的部分。
exports.handler = async (event,context,callback) => {
var exam2 = event.currentIntent.slots.ClassID;
var info = await getExamSchedule(exam2,"Final_Exams");
var res;
// if (info !== 0)
if(info != null){
res =`The exam information for ${exam2} is ${info.ClassID} Date: ${info.ExamDate}
End time: ${info.ExamEndTime} Location: ${info.ExamLocation} Start time: ${info.ExamStartTime}`;
} else {
res = `The exam is not entered into our database,please look for another exam.`;
}
callback(null,{
"dialogAction": {
"type":"Close","fulfillmentState": "Fulfilled","message":{
"contentType": "PlainText","content": res
}
}
});
};
解决方法
您是否可以共享运行代码时遇到的一些日志和/或堆栈跟踪?