Запросить индекс в динамо-базе данных, используя golang - PullRequest
0 голосов
/ 20 апреля 2019

Мне нужен пример в 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

любая ссылка на хороший учебник будет признательна, или пример кода в качестве ответатоже.

заранее спасибо

1 Ответ

2 голосов
/ 21 апреля 2019

Я думаю, вам не хватает имен атрибутов выражений. Попробуйте добавить это к вашему запросу:

ExpressionAttributeNames:  expr.Names(),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...