0

如果我做这样的事情:

ddbClient.query(someParams).promise()

我会经常(或可能总是)得到这个错误:

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

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

看起来这可能是一个错误?

4

1 回答 1

0

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

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

问题是 DynamoDB API 中的每个调用都返回一个AWS.Request类型的对象。只有在您调用该send()方法时才会发送实际的 HTTP 请求。但是传递一个回调隐式调用send(),并且调用promise()隐式再次调用它。您只能调用send()一次。

回调必须变成.then()调用。

于 2019-02-14T21:25:53.480 回答