DynamoDB提供用于删除项目的API。在返回的DeleteItemOutcome
和DeleteItemResult
中,没有字段或方法来确定是否找到了密钥并且项目确实已删除。
确定项目是否确实存在和删除的唯一方法是请求项目'属性:
new DeleteItemSpec()
.withPrimaryKey("key","1")
.withReturnValues(ReturnValue.ALL_OLD))
然而,这会消耗额外的读取容量。有没有更有效的方法来检查删除结果 - 找到密钥和删除/无效密钥?
答案 0 :(得分:8)
DeleteItemResult#getAttributes()
用于确定DeleteItem
操作是否实际删除了某个项目的方式。
如果指定ReturnValue.ALL_OLD
并且项目已删除,则返回项目属性的地图,否则返回空地图。这是确定操作是否成功的唯一方法。 API不会返回任何其他确认。
请注意,DeleteItem
操作每次至少会消耗1个写入容量单位。如果删除的项目大于1KB,则消耗的容量将大于1.
答案 1 :(得分:0)
尝试使用条件表达式,例如
attribute_exists(my_key)
如果元素不存在,将引发条件检查错误