我正在尝试使用分页列出 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,而不是使用NewScanPaginator。QueryInput
NewQueryPaginator
- 2 回答
- 0 关注
- 78 浏览
添加回答
举报
0/150
提交
取消