2016-05-11 16 views
2

ich bestimmtem Artikel (nur ein Datum aus Zeile) aktualisieren mag,Aktualisierte in DynamoDB mit Java

Wie kann ich Artikel in DynamoDB aktualisieren.?

login_id ist mein Primärschlüssel. Ich überlasse login_id und andere boolesche Werte. Ich möchte den Booleschen Wert true entsprechend dieser Login-ID setzen.

Wie kann ich das tun?

Ich habe diesen Code versucht.

LinkedHashMap inputHashMap = (LinkedHashMap) input; 

     login_id = (String) inputHashMap.get("login_id"); 
     isUserVerified = (Boolean) inputHashMap.get("isUserVerified"); 

     DynamoDB dynamoDB = new DynamoDB(new AmazonDynamoDBClient()); 

     Table tableUserDetails = dynamoDB.getTable(USER_DETAILS_TABLE); 
     Table tableOtpStatus = dynamoDB.getTable(OTP_DETAILS_TABLE); 

     UpdateItemSpec updateItemSpec = new UpdateItemSpec().withPrimaryKey("login_id", login_id); 

     try{ 

      UpdateItemOutcome outcome = tableUserDetails.updateItem(updateItemSpec); 
      System.out.println("UpdateItem succeeded:\n" + outcome.getItem().toJSONPretty()); 
     }catch(Exception e){ 
      System.err.println(e.getMessage()); 
     } 

Während oben die Ausführung von Code habe ich unter Ausnahme.

The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException; 

Antwort

4

Sieht aus, als ob Sie den Update-Ausdruck vermissen. Nimmt man isUserVerified Teil des Primärschlüssels ist, sollte es so etwas wie:

UpdateItemSpec updateItemSpec = new UpdateItemSpec() 
     .withPrimaryKey("login_id", login_id) 
     .withUpdateExpression("set isUserVerified = :val") 
     .withValueMap(new ValueMap() 
     .withBoolean(":val", true)); 

Wenn isUserVerified nicht Teil des Schlüssels dann entfernen Sie sie gerade aus dem .withPrimaryKey() Aussage.

Sie finden mehr here.

+0

Danke für die Antwort. Ich habe das Problem auf diese Weise bereits gelöst. Danke für die Information. –

+1

Hey kannst du mir Beispiel geben, wenn ich mehr als einen Wert basierend auf login_id (Primärschlüssel) updaten möchte. –

Verwandte Themen