我正在嘗試使用分頁列出 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 關注
- 103 瀏覽
添加回答
舉報
0/150
提交
取消