首先,我使用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);
});
};
答案 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错误。我的建议是简单地删除这个函数调用。