首页 > 解决方案 > 仅当 HashKey RangeKey 对在表中时,DynamoDB 映射器才更新项目

问题描述

我想为我的 DynamoDB 表设计一个更新函数,仅当哈希键和范围键对位于 DynamoDB 表中时才更新记录。如果该项目不存在,我想抛出一个 badRequestError。如何使用 DynamoDB 表达式来实现这一点?我可以将 expectedAttributetrue设置为并将条件运算符设置为AND吗?

标签: javaamazon-dynamodb

解决方案


如果您正在使用DynamoDBMapper,您可以使用DynamoDBSaveExpression

就像是:

Map<String, ExpectedAttributeValue> expected =
    Map.of("hashKeyAttrName", new ExpectedAttributeValue().withExists(true),
        "rangeKeyAttrName", new ExpectedAttributeValue().withExists(true));
DynamoDBSaveExpression expression = new DynamoDBSaveExpression();
expression.setExpected(expected);
dynamoDBMapper.save(item, expression);

如果条件不满足save将抛出一个ConditionalCheckFailedException


推荐阅读