我需要golang中的示例,说明如何在dynamo db中对索引进行查询。 https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/SQLtoNoSQL.Indexes.QueryAndScan.html
上面的一个是针对JS的,我找不到一个用于golang的代码,而我之前为go编写了此代码的代码:
让我们说一下二级索引的名称是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
任何指向优秀教程的链接都将受到赞赏,或者将代码示例作为答案。
预先感谢
答案 0 :(得分:2)
我认为您缺少表达式属性名称。尝试将其添加到您的查询输入中:
ExpressionAttributeNames: expr.Names(),