我已经坚持使用这段代码大约一天了。我只是想通过使用Alexa的启动请求将信息添加到DynamoDB中。我收到以下错误代码:
“errorMessage”:“RequestId:f96ae2cb-1dbf-11e7-a267-b7cf2f2c95a0在完成请求之前退出流程”
信息实际上已插入到DynamoDB中,但由于错误,我无法向程序添加更多功能。根据我的理解,这可能是回调的问题。我已经尝试了许多不同的方法来“回调”或返回一些东西,但我还没弄清楚如何避免错误。如果我取消注释this.emit(':tell',“Hello,将Apples插入DynamoDB”);错误消失,但没有插入信息。任何帮助真的很赞赏!! (以下代码)
'use strict';
var Alexa = require('alexa-sdk');
const doc = require('dynamodb-doc');
const dynamo = new doc.DynamoDB();
exports.handler = function(event, context, callback) {
var alexa = Alexa.handler(event, context);
alexa.registerHandlers(handlers);
alexa.execute();
};
var handlers = {
'LaunchRequest': function(event, context, callback) {
// this.emit(':tell', "Hello, inserting Apples into DynamoDB");
var params = {
Item: {
date: Date.now(),
message: "Apples"
},
TableName: '_yourTableName'
};
dynamo.putItem(params, function(err, data){
if(err){
callback(err,null);
}
else{
callback(null,data);
}
});
context.done();
}
};
答案 0 :(得分:0)
这是因为您要向Dynamodb添加值,这是一个回调但context.done();是在回调之外写的。在dynamoDb完成操作之前,它将调用context.done();因此它将退出流程