如果我这样做:
ddbClient.query(someParams).promise()
我会经常(或可能总是)收到此错误:
错误:ValidationException:已使用的请求对象
这似乎是因为在调用.promise()时已经启动了promise和query,但是对于直接连接到数据库而不是通过dax的ddb客户端,它可以正常工作。
似乎这可能是一个错误?
答案 0 :(得分:0)
此问题是由于同时使用回调和.promise()
方法引起的,
ddbClient.query(someParams, (error, result) => { something } ).promise();
问题是DynamoDB API中的每个调用都返回一个AWS.Request类型的对象。仅当您调用send()
方法时,才会发送实际的HTTP请求。但是传递回调将隐式调用send()
,而调用promise()
则隐式调用一次。您只能拨打一次send()
。
回调必须转换为.then()
调用。