Получение информации из таблицы в DynamoDB - PullRequest
0 голосов
/ 28 апреля 2018

Я пытаюсь найти способ запрашивать (сканировать) таблицу в DynamoDB. Это код, который у меня есть, почти работает.

    let dynamoDbObjectMapper = AWSDynamoDBObjectMapper.default(),
    scanExpression = AWSDynamoDBScanExpression()
    dynamoDbObjectMapper.scan(MyTable.self, expression: scanExpression) {
        (output: AWSDynamoDBPaginatedOutput?, error: Error?) in
        if error != nil {
            print("The request failed. Error: \(String(describing: error))")
        }

        if output != nil {
            print("Item count: \(output!.items.count)")
            for item in output!.items {
                let theItem = item as? MyTable
                print("theItem: \(theItem!._vcIdKey!)")
            }
        }
    }

Когда я запускаю этот код, я вижу один элемент в списке, хотя в действительности их семь.

На самом деле я хочу один элемент, но я подумал, что мне нужно добавить эту строку для этого (и мне не нужно):

scanExpression.limit = 1

Почему это так?

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

Что мне нужно изменить?

Немного больше информации: я также попробовал следующий код, с тем же результатом.

    dynamoDbObjectMapper.scan(VoChaAudioPost.self, 
                              expression: scanExpression).continueWith(block: {
        (task:AWSTask<AWSDynamoDBPaginatedOutput>!) -> Any? in

        if let error = task.error as NSError? {
            print("The request failed. Error: \(error)")
        } else if let output = task.result {
            print("items count: \(output.items.count)")
            for item in output.items /*as! VoChaAudioPost*/ {
                // Do something with item.
                print("item : \(item)")
            }
        }
        return()
    })
...