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

j3d

我正在尝试使用分页列出 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.

但是为什么要KeyConditionExpression在我想要获取所有项目时指定 a呢?有没有其他方法或解决方法?

延斯

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

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

而不是QueryInput使用ScanInput而不是NewQueryPaginator使用NewScanPaginator

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用公式(无脚本)列出或列出Google表格中的所有表格/标签

如何列出项目中所有表格的大小

如何使用lua api读取表格中的所有项目?

如何从DynamoDBMapper query()的分页结果中检索所有项目?

如何在Powershell中列出目录中的所有项目

如何选择recyclerview中列出的所有项目?

如何快速列出组织中的所有 Google Cloud 项目?

如何列出 GCP 中属于特定组织的所有项目

使用继承时如何列出所有项目?

如何使用OpenPyXL列出Excel电子表格中的所有第一行值?

从表格中找出所有重复的项目

如何使用Haskell列出图形中的所有路径

如何使用python动态列出目录中的所有文件?

列出所有项目并突出显示给定类别中的项目

列出表格中的所有负数和最小正数

PHP MYSQL分页列出所有字段

在PySpark 1.5.0中,如何基于列x的值列出列y的所有项目?

此代码如何列出文件夹中的所有项目?

如何在树结构上列出 MongoDB 中的所有项目?

如何自动列出所有在Java中使用第三方组件+阵营项目?

如何使用rest api调用列出azure devops项目中的所有错误?

使用Rally Java API列出Rally中Parent的所有子项目

使用 Python API 列出 Google Cloud 中项目中的所有用户

如何使用数据表中的选定项目作为数组使用laravel将每行列出的所有数据保存到数据库中

如何列出提交中的所有文件?

如何列出make中的所有目标?

MySQL:如何列出所有项目并进行排序?

如何列出项目的所有上传内容?

如何列出与某个类别相关的所有项目