为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用分页列出表中的所有项目

如何使用分页列出表中的所有项目

Go
眼眸繁星 2022-09-05 09:25:11
我正在尝试使用分页列出 DynamoDB 表中的所有项目,以下是我的尝试:const tableName = "RecordingTable"type Recording struct {    ID string `dynamodbav:"id"`    CreatedAt string `dynamodbav:"createdAt"`    UpdatedAt string `dynamodbav:"updatedAt"`    Duration int `dynamodbav:"duration"`}type RecordingRepository struct {    ctx context.Context    svc *dynamodb.Client}func NewRecordingRepository(ctx context.Context) (*RecordingRepository, error) {    cfg, err := config.LoadDefaultConfig(ctx)    if err != nil {        return nil, err    }    return &RecordingRepository{ctx, dynamodb.NewFromConfig(cfg)}, nil}func (r *RecordingRepository) List(page int, size int) ([]Recording, error) {    size32 := int32(size)    queryInput := &dynamodb.QueryInput{        TableName: aws.String(tableName),        Limit:     &size32,    }    recordings := []Recording{}    queryPaginator := dynamodb.NewQueryPaginator(r.svc, queryInput)    for i := 0; queryPaginator.HasMorePages(); i++ {        result, err := queryPaginator.NextPage(r.ctx)        if err != nil {            return nil, err        }        if i == page {            if result.Count > 0 {                for _, v := range result.Items {                    recording := Recording{}                    if err := attributevalue.UnmarshalMap(v, &recording); err != nil {                        return nil, err                    }                    recordings = append(recordings, recording)                }            }            break        }    }    return recordings, nil}当我运行上面的代码时,我收到以下错误消息:api error ValidationException: Either the KeyConditions or KeyConditionExpression parameter must be specified in the request.但是,为什么我应该在想要获取所有项目时指定 a?有没有另一种方法或解决方法?KeyConditionExpression
查看完整描述

2 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

Query确实需要你的钥匙。它用于在 DynamoDB 中查找特定项目。要获取 DynamoDB 中的所有项目,您需要使用该操作。Scan

这应该很容易在代码中修复。

而不是使用ScanInput,而不是使用NewScanPaginatorQueryInputNewQueryPaginator


查看完整回答
反对 回复 2022-09-05
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

刚刚替换为 和 。QueryInputScanInputQueryPaginatorScanPaginator



查看完整回答
反对 回复 2022-09-05
  • 2 回答
  • 0 关注
  • 78 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信