使用 Alexa Lambda 函数将信息添加到 DynamoDB



我已经在这个代码上停留了大约一天了。

我只是尝试通过使用 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((;因此它将退出进程

最新更新