使用golang查询dynamo db中的索引

问题描述 投票:0回答:1

我需要在golang中有一个关于如何对dynamo db中的索引进行查询的示例。 https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/SQLtoNoSQL.Indexes.QueryAndScan.html

上面的一个用于JS我找不到一个golang和我之前为go编写这段代码的代码:

让我们说,secundary指数的名称是user_id_index,而关键名称是user_id

    keyCondition := expression.Key("user_id").Equal(expression.Value(userId))
    expr, errExpression := expression.NewBuilder().WithKeyCondition(keyCondition).WithProjection(proj).Build()

    if errExpression != nil {
        log.Printf("error: creating dynamo expression ", errExpression)

        return listResponse, errExpression
    }
    params := &dynamodb.QueryInput{
        ExpressionAttributeValues: expr.Values(),
        ProjectionExpression:      expr.Projection(),
        TableName:                 aws.String(tableName),
        IndexName:                 aws.String("user_id_index"),
        KeyConditionExpression:    expr.KeyCondition(),

    }
    result, errResults := svc.Query(params)

我收到以下错误

error: scanning dynamo table %!(EXTRA *awserr.requestError=ValidationException:
 Invalid KeyConditionExpression: An expression attribute name used in the document path is not defined;
 attribute name: #0

任何链接到一个好的教程将不胜感激,或代码示例也作为答案。

提前致谢

go amazon-dynamodb
1个回答
2
投票

我认为你缺少表达式属性名称。尝试将此添加到您的查询输入:

ExpressionAttributeNames:  expr.Names(),
© www.soinside.com 2019 - 2024. All rights reserved.