Мне нужно добавить атрибут к каждому элементу в таблице для нескольких разных таблиц. Я хочу иметь возможность предоставить имя таблицы, а затем добавить атрибут ко всему в таблице, даже без кода, который должен «знать» о текущих атрибутах в таблице.
Мой текущий план состоит в том, чтобы просмотреть таблицу, получить ключи и затем использовать ее в качестве входных данных в запросе 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)
}
- Можно ли как-нибудь выполнить сканирование и узнать, какие части элементов результата предназначены для ключа?
- Есть ли лучший способ обновить все элементы, содержащие атрибут?