【发布时间】:2021-12-01 09:41:36
【问题描述】:
我正在尝试优化对 dynamodb 的查询以返回所有匹配项。从 cli 我可以查询该表并返回所有 303 项。
CLI 请求:
aws dynamodb 查询 --table-name my-table --index-name "myGsi" --key-condition-expression 'myId=:someId' --expression-attribute-values '{":someId":{ "S":"86c10962-6444-4f09-8f6c-dc6b30abac25"}}' 回应:
{
"Items": [
{ ... },
{ ... }
],
"Count": 303,
"ScannedCount": 303,
"ConsumedCapacity": null
}
问题在于,当我尝试在我的 Typescript 应用程序中重新创建该查询时,我在响应中只得到了大约 60 个项目(并不总是一致的)。
代码:
const params: DocumentClient.QueryInput = {
TableName: 'my-table',
IndexName: 'myGsi',
KeyConditionExpression: 'myId = :someId',
ExpressionAttributeValues: {
':someId': '86c10962-6444-4f09-8f6c-dc6b30abac25',
}
};
const result: DocumentClient.QueryOutput = await dynamoClient.query(params).promise();
但是,这里的结果要小很多,我需要分页:
{
"Items": [
{ ... },
{ ... }
],
"Count": 59,
"ScannedCount": 59,
"LastEvaluatedKey": "xyz"
}
关于如何从 SDK 的单个请求中获取所有/更多内容的任何想法?为什么结果会与我的 CLI 请求不同?
【问题讨论】:
标签: pagination secondary-indexes aws-dynamodb