在dax-services dynamodb文档客户端上使用.promise()调用返回错误:错误:ValidationException:已使用请求对象

时间:2018-02-15 20:34:57

标签: amazon-dynamodb-dax

如果我这样做:

ddbClient.query(someParams).promise()

我会经常(或可能总是)收到此错误:

错误:ValidationException:已使用的请求对象

这似乎是因为在调用.promise()时已经启动了promise和query,但是对于直接连接到数据库而不是通过dax的ddb客户端,它可以正常工作。

似乎这可能是一个错误?

1 个答案:

答案 0 :(得分:0)

此问题是由于同时使用回调和.promise()方法引起的,

ddbClient.query(someParams, (error, result) => { something } ).promise();

问题是DynamoDB API中的每个调用都返回一个AWS.Request类型的对象。仅当您调用send()方法时,才会发送实际的HTTP请求。但是传递回调将隐式调用send(),而调用promise()则隐式调用一次。您只能拨打一次send()

回调必须转换为.then()调用。