DynamoDB - Можно ли добавить атрибут ко всем элементам в таблице без жесткого кодирования атрибутов, содержащих ключи? - PullRequest
0 голосов
/ 28 марта 2019

Мне нужно добавить атрибут к каждому элементу в таблице для нескольких разных таблиц. Я хочу иметь возможность предоставить имя таблицы, а затем добавить атрибут ко всему в таблице, даже без кода, который должен «знать» о текущих атрибутах в таблице.

Мой текущий план состоит в том, чтобы просмотреть таблицу, получить ключи и затем использовать ее в качестве входных данных в запросе updateItem, где мы добавляем новый атрибут в таблицу.

Тем не менее, я столкнулся с проблемой, потому что сканирование возвращает карту атрибутов, и без жесткого кодирования, я не уверен, как я смогу определить, что что-то является ключом или sortKey или просто случайный атрибут?

Вот очень упрощенный пример проблемы:

public void someFunc() {
   ScanRequest scanRequest = new 
       ScanRequest().withTableName(tableName);
   ScanResult result = dynamoClient.scan(scanRequest);

   result.getItems().forEach(item -> addFlag(item));
}

public void addFlag(Map<String, AttributeValue> item) {
    // How do I know which attributes to use as a key? I'd like to keep this generic so I can use it on theoretically any table. 
   final UpdateItemRequest updateItemRequest = new UpdateItemRequest()
         .withKey(// map of attribute name to attribute here)
}
  1. Можно ли как-нибудь выполнить сканирование и узнать, какие части элементов результата предназначены для ключа?
  2. Есть ли лучший способ обновить все элементы, содержащие атрибут?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...