我已经在这个代码上停留了大约一天了。
我只是尝试通过使用 Alexa 的启动请求将信息添加到 DynamoDB 中。
我收到以下错误代码:
"错误消息": "请求 ID: f96ae2cb-1dbf-11e7-a267-b7cf2f2c95a0 进程在完成请求之前退出">
该信息实际上已插入到 DynamoDB 中,但由于该错误,我无法向程序添加更多函数。
据我了解,这可能是回调的问题。
我已经尝试了许多不同的方法来"回调"或返回一些东西,但我还没有弄清楚如何避免错误。
如果我取消注释this.emit(':tell', "Hello, inserting Apples into 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();
}
};
这是因为您正在向 Dynamodb 添加值,这是一个回调,但 context.done((; 写在回调之外。在 dynamoDb 完成操作之前,它将调用 context.done((;因此它将退出进程