Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AWS Lambda未运行DynamoDB命令:getItem或batchGetItem_Javascript_Amazon S3_Amazon Dynamodb_Aws Sdk_Alexa - Fatal编程技术网

Javascript AWS Lambda未运行DynamoDB命令:getItem或batchGetItem

Javascript AWS Lambda未运行DynamoDB命令:getItem或batchGetItem,javascript,amazon-s3,amazon-dynamodb,aws-sdk,alexa,Javascript,Amazon S3,Amazon Dynamodb,Aws Sdk,Alexa,我试图让batchGetItem()DynamoDB函数从表中返回值。但是,当调用时,它不会执行代码。我通过向代码的各个部分添加日志来测试这一点。我撕下了肉,但这是正在执行的代码(storageEvents.js): “严格使用”; var AWS=要求(“AWS sdk”); var storageEvents=(函数(){ var dynamodb=新的AWS.dynamodb({apiVersion:'2012-08-10',region:'us-east-1'}); var s3=新的

我试图让batchGetItem()DynamoDB函数从表中返回值。但是,当调用时,它不会执行代码。我通过向代码的各个部分添加日志来测试这一点。我撕下了肉,但这是正在执行的代码(storageEvents.js):

“严格使用”;
var AWS=要求(“AWS sdk”);
var storageEvents=(函数(){
var dynamodb=新的AWS.dynamodb({apiVersion:'2012-08-10',region:'us-east-1'});
var s3=新的AWS.s3({apiVersion:'2012-08-10',region:'us-east-1'});
var myBucket='my.events';
var myObject='events.txt';
返回{
loadEvents:函数(会话、回调){
log('loadEvents');
dynamodb.batchGetItem({
请求项目:{
“事件数据”:{
关键点:[
{'country':{S:'USA'}
],
}
}
},函数(错误,数据){
log('batchGetItem');
var currentEventsList=“测试”;
回调(currentEventsList);
});
},
loadEvent:函数(会话、回调){
console.log('loadEvent');
dynamodb.getItem({
TableName:'EventsData',
键:{event_name:{S:'Fun event'}
},函数(错误,数据){
log('getItem');
var currentEventsList=“测试”;
回调(currentEventsList);
});
},
loadS3events:函数(会话、回调){
log('loadS3events');
s3.getObject({
桶:我的桶,
关键字:myObject
},函数(错误,数据){
log('getObject');
var currentEventsList=“测试”;
回调(currentEventsList);
});
}
};
})();

module.exports=存储事件这是脚本上的输出

ReferenceError: session is not defined
    at Object.<anonymous> (/home/ec2-user/testing/test/index.js:3:26)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Function.Module.runMain (module.js:441:10)
    at startup (node.js:134:18)
    at node.js:962:3

一切正常。

我解决了问题。我一直在函数中调用storageEvents.loadEvents(),我是从handleFirstEvent()函数调用该函数的。因为它不是通过回调完成的,所以函数在收到数据之前退出。在我的loadUser()函数中,这是有效的,因为我使用的是来自主处理函数的回调。我现在明白了回调必须堆叠才能使用数据。

我不确定我是否遵循了。本例中的会话是从intent传入的。您是如何获得上述输出的?我没有看到任何错误级别的日志记录可以告诉我出了什么问题。我还确认session.sessionId在包括loadEvents在内的每个步骤中都是相同的,因此它肯定不会错过会话。您只需运行脚本即可获得输出。此外,您没有记录任何错误,因此不会记录错误。这是在AWS Lambda的Alexa技能中运行的。我不仅仅是从命令行运行它。
loadEvents
batchGetItem
getEventsFromDynamoDb currentEventsList: test