Невозможно получить столбец списка AWS DynamoDB в Android Kotlin - PullRequest
0 голосов
/ 23 октября 2018

Я занимаюсь разработкой приложения для Android с использованием Kotlin и AWS DynamoDB.Я новичок в обеих технологиях.Сейчас я пытаюсь сканировать данные из таблицы DynamoDB.Я знаю, как это сканировать.Но проблема в том, что один из столбцов имеет тип данных List.

У меня есть таблица с именем item со следующими столбцами.

enter image description here

Пожалуйста, обратите внимание на поле Изображения.

В Android Kotlin я сканирую таблицу следующим образом.

val dynamoDBClient = AmazonDynamoDBClient(AWSMobileClient.getInstance().credentialsProvider)
            val fetchedItems: ArrayList<Any> = ArrayList();

            val scanRequest = ScanRequest().withTableName(MainApplication.DB_TABLE_ITEMS);
            scanRequest.exclusiveStartKey = lastEvaluatedKey

            val scanResult = dynamoDBClient.scan(scanRequest)
            scanResult.items.forEach { item ->
                Log.i("ITEM_NAME", item.get("Name")?.s)
                val viewItem = ItemDO()
                viewItem.id = item.get("Id")?.s
                viewItem.description = item.get("Description")?.s
                viewItem.name = item.get("Name")?.s
                viewItem.userId = item.get("UserId")?.s
                viewItem.images = item.get("Images")?.ns
                fetchedItems.add(viewItem)
                Log.i("IMAGES_COUNT", item.get("Images")?.ns?.size.toString())
            }

Но это

item.get("Images")?.ns

всегда возвращаетNULL, даже если данные существуют в столбце, как на снимке экрана ниже.

enter image description here

Почему мой код выбирает не тип данных списка, а другие?Как я могу это исправить?

1 Ответ

0 голосов
/ 08 января 2019

Код выглядит хорошо и должен возвращать данные для всех атрибутов независимо от их типа.У меня есть эквивалентный кусок кода в Java, который работает как ожидалось.Можете ли вы попробовать проверить значение, возвращаемое item.get("Images"), прежде чем делать нулевой безопасный вызов.Тип значения, возвращаемого item.get("Images"), равен AttributeValue, поэтому существует вероятность того, что значение будет потеряно в ходе неявного преобразования типа.

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