Я пытаюсь передать значение, которое я получаю в Dynamodb.scan, за пределами блока Dynamodb.scan, но я получаю пустой список, причина может быть в том, что его асинхронная функция в любом случае получает желаемый вывод
function contactMethod(contact){
dynamodb.scan(params, function(err, data){
const teamMembers = [];
if(err){
console.log(err);
}else{
const items = data.Items.map((dataField) =>{
if(dataField.name.S === member){
return {name: "" +dataField.name.S, email: "" + dataField.email.S};
}
});
items.forEach(function(item){
if(item !== undefined){
teamMembers.push(item.name, item.email);
}
})
}
console.log(teamMembers); //I am getting the desired o/p over here
})
}
function dispatch(intentRequest, callback) {
const intentName = intentRequest.currentIntent.name;
if (intentName == 'SOMETHING'){
sessionAttributes = intentRequest.sessionAttributes;
slots = intentRequest.currentIntent.slots;
team = slots.team;
contact = slots.contact;
member = slots.teammember;
params = {
TableName: 'team'
};
if(contact === 'email' || contact === 'phone'){
contactMethod(contact);
}
console.log(teamMembers);//getting empty list over here
callback(close(sessionAttributes, 'Fulfilled',
{'contentType': 'PlainText', 'content': `Okay, Here are the details you requested ${teamMembers}`}));
}
throw new Error(`Intent with name ${intentName} not supported`);
}