我有一个同时具有哈希键和范围键的表。该表当前为空,我正在尝试使用通过将hashkey作为参数传递的load()从表中获取值,但是它什么也没有返回。我既没有得到NULL也没有任何异常。只是什么都没有发生。
但是如果我使用query()并至少使用查询表达式,我将得到列表,其大小为0,这是预期的。
在第一种情况下,我无法全神贯注。发生了什么错误?如果表同时具有哈希键和范围键,或者我们错过了一些重要的东西,就像我们不能使用load(hashkey)一样?
答案 0 :(得分:0)
如果我有一个项目,您将得到错误。 Load
正在寻找与您的主键完全匹配的特定项目,但是hash+range
键是复合主键,而不仅仅是hash
键。因此,当您拥有复合主键时,您不能简单地要求仅提供一个hash
键的项。该hash
上可能有多个值,但是您正在尝试针对单个项目的load
。您只能做query
,因为那样您就可以检索到多个项目
| HashKey | RangeKey |
|:---------:|----------:|
| SomeHash1 | Range1 |
| SomeHash1 | Range2 |
| SomeHash1 | Range3 |
| SomeHash2 | Range1 |
您想要load
SomeHash1的图像。有3个项目,但是load
用于检索具有主键的项目。