使用ValueMap中的参数作为索引时无效的UpdateExpression(REMOVE myArray [:index])

时间:2017-02-01 14:43:44

标签: amazon-dynamodb

我尝试从数组中删除元素。这个操作

UpdateItemSpec updateItemSpec = new UpdateItemSpec()
            .withPrimaryKey("id", id)
            .withNameMap(new NameMap().with("#P", "myArray"))
            .withValueMap(new ValueMap().withInt(":index", index))
            .withUpdateExpression("REMOVE #P[:index]");

    table.updateItem(updateItemSpec);

com.amazonaws.services.dynamodbv2.model.AmazonDynamoDBException: Invalid UpdateExpression: Syntax error; token: ":index", near: "[:index]"

的结果

如果我删除ValueMap和concat字符串,就像这个"REMOVE #P["+index+"]"一样,它工作正常,但这个解决方案看起来很难看(就像旧的错误的SQL注入东西)。有没有办法提供索引作为参数?

1 个答案:

答案 0 :(得分:0)

  

删除 - 从项目中删除一个或多个属性

删除 - UpdateExpression 预计只有REMOVE的属性名称。它不应包含与 SET 类似的属性值。

除了字符串连接之外别无选择。