如果我做这样的事情:
ddbClient.query(someParams).promise()
我会经常(或可能总是)得到这个错误:
错误:ValidationException:请求对象已使用
这似乎是因为在调用 .promise() 时承诺和查询已经启动,但是对于直接连接到数据库而不是通过 dax 的 ddb 客户端,这可以正常工作。
看起来这可能是一个错误?
如果我做这样的事情:
ddbClient.query(someParams).promise()
我会经常(或可能总是)得到这个错误:
错误:ValidationException:请求对象已使用
这似乎是因为在调用 .promise() 时承诺和查询已经启动,但是对于直接连接到数据库而不是通过 dax 的 ddb 客户端,这可以正常工作。
看起来这可能是一个错误?
此问题是由于同时使用回调和.promise()
方法引起的,如下所示:
ddbClient.query(someParams, (error, result) => { something } ).promise();
问题是 DynamoDB API 中的每个调用都返回一个AWS.Request类型的对象。只有在您调用该send()
方法时才会发送实际的 HTTP 请求。但是传递一个回调隐式调用send()
,并且调用promise()
隐式再次调用它。您只能调用send()
一次。
回调必须变成.then()
调用。