【问题标题】:How to use AWS SDK with Promise如何将 AWS 开发工具包与 Promise 一起使用
【发布时间】:2016-12-15 06:55:54
【问题描述】:

起初,我使用简化回调方法工作正常。现在,我想使用 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);
  });
};

【问题讨论】:

  • CloudWatch 日志中是否没有错误消息?

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


【解决方案1】:

复制自your reference:

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

由于您使用的是 Node.js 4.3 环境,因此您已经获得了 Promise 支持,即您无需调用 setPromiseDependecy() 函数。我的怀疑是,由于您使用 null 参数调用该函数,因此 AWS 开发工具包在尝试创建新承诺时会引发 NPE,从而导致 500 错误。我的建议是简单地删除这个函数调用。

【讨论】:

    猜你喜欢
    • 2018-01-19
    • 2021-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多