Как извлечь первую строку в таблице DynamoDB? - PullRequest
0 голосов
/ 27 апреля 2018

Я впервые использую (AWS) DynamoDB, поэтому мой вопрос довольно простой.

Я настроил таблицу (myTable), содержащую одно поле (theField), и могу заполнять ее по одной записи за раз.

Вот что я хочу сделать: сделать запрос для извлечения первого элемента отсортированной таблицы . Я думаю, это вряд ли может быть проще.

Это мой код, основанный на том, что я мог найти в документации AWS и на примере из сети:

    let queryExpression = AWSDynamoDBQueryExpression()
    queryExpression.scanIndexForward = false
    queryExpression.limit = 1

    let dynamoDbObjectMapper = AWSDynamoDBObjectMapper.default()
    dynamoDbObjectMapper.query(myTable.self, expression: queryExpression) {
       (output: AWSDynamoDBPaginatedOutput?, error: Error?) in
        if error != nil {
            print("The request failed. Error: \(String(describing: error))")
        }
        if output != nil {
            // Process the output.
        }
    }

Когда я запускаю этот код, я получаю сообщение об ошибке ниже:

The request failed. Error: Optional(Error Domain=com.amazonaws.AWSCognitoIdentityErrorDomain Code=0 "(null)" 
UserInfo={__type=com.amazon.coral.validate#ValidationException, message=Either the KeyConditions or 
KeyConditionExpression parameter must be specified in the request.})

Во-первых, что это за бизнес KeyConditions или KeyConditionExpression? Вопрос понятен, зачем мне какое-либо условие?

Во-вторых, я, конечно, пытался заполнить какое-то фиктивное условие (основываясь на том, что я мог найти в каком-то другом посте), чтобы увидеть, что происходит, но это не сработало.

Может кто-нибудь сказать мне, как мне нужно написать queryExpression, чтобы делать то, что я хочу?

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

Вы не можете извлечь первый элемент из динамодаба. Не со сканированием или запросом. Вы должны отсканировать таблицу полностью или создать GSI с созданным как hashKey / sortKey

0 голосов
/ 27 апреля 2018

У вас нет критериев запроса. Для запроса необходимо указать хотя бы PartitionKey. Попробуйте сканирование вместо запроса.

...