如何将AWS SDK与Promise一起使用

时间:2016-08-09 09:38:50

标签: node.js amazon-web-services promise amazon-dynamodb aws-lambda

首先,我使用Simplified Callback Method正常工作。现在,我想使用promise来查询AWS dynamoDB。  我引用了this

但总是500内部服务器错误。 我使用lambda和node.js 4.3。我想念一下吗?

Handler.js

let AWS = require('aws-sdk');
AWS.config.setPromisesDependency(null);
docClient = new AWS.DynamoDB.DocumentClient();

module.exports.handler = (event, context, callback) => {

  const listObjectPromise = docClient.query(params).promise();
  listObjectPromise.then((data) => {
      return callback(null, data);
  }).catch((err) => {
      return callback(err, null);
  });
};

1 个答案:

答案 0 :(得分:1)

your reference复制:

  

默认情况下,AWS SDK for JavaScript将检查全局定义的Promise函数。如果找到,它会在AWS.Request对象上添加promise()方法。某些环境(如Internet Explorer或早期版本的Node.js)本身不支持promise。您可以使用AWS.config.setPromisesDependency()方法提供Promise构造函数。

由于您使用的是Node.js 4.3环境,因此您已经拥有承诺支持,即您无需调用setPromiseDependecy()函数。我怀疑是因为您使用null参数调用函数,因此AWS SDK在尝试创建新承诺时会抛出NPE,从而导致500错误。我的建议是简单地删除这个函数调用。