Java 如何从Android更新DynamoDB中的项?

Java 如何从Android更新DynamoDB中的项?,java,android,amazon-dynamodb,Java,Android,Amazon Dynamodb,标题描述了围绕我痛苦三天的问题。如何从Android应用程序更新存储在DynamoDB中的项目 下面我留下了一个我已经检查并实现的链接列表,但结果不成功: 1- 结果:它严格适用于JavaEE,而不是android 2- 结果:创建一个新项目,即使“unique user id”参数显然是唯一的 3- 结果:同上,创建一个新的 4- 结果:检索但创建一个新项目我做错了什么: -在要发送更新的对象中不包括我的排序(也称为范围)键 其余的: 首先,获取您的DynamoDBClient,我强烈建议实现

标题描述了围绕我痛苦三天的问题。如何从Android应用程序更新存储在DynamoDB中的项目

下面我留下了一个我已经检查并实现的链接列表,但结果不成功:

1- 结果:它严格适用于JavaEE,而不是android

2- 结果:创建一个新项目,即使“unique user id”参数显然是唯一的

3- 结果:同上,创建一个新的

4-
结果:检索但创建一个新项目

我做错了什么: -在要发送更新的对象中不包括我的排序(也称为范围)键

其余的: 首先,获取您的DynamoDBClient,我强烈建议实现一个单例模式来调用它,我在本例中使用了configuration.json:

AWSMobileClient.getInstance().initialize(NewPatientActivity.this).execute();
    AWSCredentialsProvider credentialsProvider = AWSMobileClient.getInstance().getCredentialsProvider();
    AWSConfiguration configuration = AWSMobileClient.getInstance().getConfiguration();
    // Add code to instantiate a AmazonDynamoDBClient
    AmazonDynamoDBClient dynamoDBClient = new AmazonDynamoDBClient(credentialsProvider);
然后按如下方式设置UpdateItemRequest:

//SET THE KEYS VALUES
HashMap<String, AttributeValue> key = new HashMap<String, AttributeValue>();
            key.put("your-partition-key", new AttributeValue().withS(value));
            key.put("your-sort-key-if-exists", new AttributeValue().withS(value));
//SET VALUES TO REPLACE OLD ONES
 Map<String, AttributeValue> expressionAttributeValues = new HashMap<String, AttributeValue>();
            expressionAttributeValues.put(":val1",new AttributeValue().withN(value1));
            expressionAttributeValues.put(":val2", new AttributeValue().withS(value2));
/*
IF YOU WANT TO READ THE JUST-UPDATED ITEM, HAVE THIS READY
            ReturnValue returnValues = ReturnValue.ALL_NEW;

*/
//SET THE UPDATEITEMREQUEST
      UpdateItemRequest updateItemRequest = new UpdateItemRequest()
                    .withTableName("your-table-name")
                    //KEYS DEFINED ABOVE                        
                    .withKey(key)
                    //SET WHERE TO UPDATE
                    .withUpdateExpression("set attr1 = :val1, attr2 = :val2")
                .withExpressionAttributeValues(expressionAttributeValues)
                   //INDICATE TO RETURN UPDATED ITEM                     
                  .withReturnValues(returnValues);
   //GET THE RESULT OF YOUR UPDATE AND EXECUTE IT
     UpdateItemResult result = your-dynamo-client.updateItem(updateItemRequest);
    //convert it to a string                
     Gson gson = new Gson();
     String x = gson.toJson(result);
    //Check it out                
     Log.e("RESULT :",x);
//设置键值
HashMap key=newhashmap();
put(“您的分区键”,新的AttributeValue().with(value));
put(“如果存在排序键”,则使用新的AttributeValue().with(value));
//设置值以替换旧值
Map expressionAttributeValues=新HashMap();
expressionAttributeValues.put(“:val1”,新的AttributeValue()。带有n(value1));
expressionAttributeValues.put(“:val2”,新的AttributeValue().with(value2));
/*
如果您想阅读刚刚更新的项目,请准备好
ReturnValue returnValues=ReturnValue.ALL_NEW;
*/
//设置UPDATEITEMREQUEST
UpdateItemRequest UpdateItemRequest=新的UpdateItemRequest()
.withTableName(“您的表名”)
//上面定义的键
.带钥匙(钥匙)
//设置要更新的位置
.withUpdateExpression(“set attr1=:val1,attr2=:val2”)
.带有ExpressionAttributeValue(ExpressionAttributeValue)
//指示返回更新的项目
.带有返回值(返回值);
//获取更新的结果并执行它
UpdateItemResult=您的dynamo客户端.updateItem(updateItemRequest);
//将其转换为字符串
Gson Gson=新的Gson();
字符串x=gson.toJson(结果);
//看看
Log.e(“结果:”,x);
为了进一步了解,我详细阐述了要点