2013-03-12 4 views
1

У меня есть таблица DynamoDB с полем «count» Number. Я увеличиваю поле с помощью AttributeAction.ADD. Он работает, но когда я снова запускаю приложение, он не увеличивает существующее значение, вместо этого оно начинается с «1».Инкрементный номер поля DynamoDB не сохраняется

Я ожидаю:

run #1: 1,2,3,4,5 
run #2: 6,7,8,9,10 

Вместо этого я вижу:

run #1: 1,2,3,4,5 
run #2: 1,2,3,4,5 

Что я делаю неправильно? Вот код, который я запускаю в своем приложении:

 Map<String, AttributeValueUpdate> updateItems = new HashMap<String, AttributeValueUpdate>(); 

     Key key = new Key().withHashKeyElement(new AttributeValue().withS(targetKey)); 
     updateItems.put("count", 
       new AttributeValueUpdate() 
         .withAction(AttributeAction.ADD) 
         .withValue(new AttributeValue().withN("1"))); 

     ReturnValue returnValues = ReturnValue.ALL_NEW; 

     UpdateItemRequest updateItemRequest = new UpdateItemRequest() 
       .withTableName(tableName) 
       .withKey(key) 
       .withAttributeUpdates(updateItems) 
       .withReturnValues(returnValues); 


     UpdateItemResult result = dynamoDB.updateItem(updateItemRequest); 
+0

Код выглядит хорошо. Что такое targetKey? возможно, это другое? –

+0

targetKey является основным элементом таблицы. Это просто переменная, переданная в этот код. – TERACytE

ответ

0

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

Смежные вопросы