无法转换 属性 的范围键值
Unable to convert range key value for property
我将 dynamoDB 与 C# 驱动程序一起使用,并且我有一个 table 用户。 table 有以下两个主键:
- 主哈希键:UserId(数字)
- 主要范围键:已创建(字符串)
然后我尝试在上下文中使用 Load 方法加载用户,如下所示:
_dynamoDBClient.Context.Load<User>(12345);
然后我得到以下异常:
"exceptionMessage": "Unable to convert range key value for property
Created", "exceptionType": "System.InvalidOperationException"
如果我加载特定范围键,例如:
_dynamoDBClient.Context.Load<User>(12345, "2015-01-01");
一切正常。
即使 table 有一个范围键,有没有一种方法可以仅使用主哈希键来加载键入的用户?我不想每次需要获取用户时都发送创建日期。还是我误解了 dynamoDB 中范围键的概念?
Load
方法用于从您的 table 中检索单个项目,因此您需要提供完整的主键。
在幕后,Load
方法实际上从本地 AWS DynamoDB API 调用 GetItem
操作,它对需要提供的属性有以下要求:
For the primary key, you must provide all of the attributes. For
example, with a hash type primary key, you only need to provide the
hash attribute. For a hash-and-range type primary key, you must
provide both the hash attribute and the range attribute.
来源:
http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html
如果您的 table 的主键由散列键和范围键组成,那么您必须提供两者才能匹配单个项目。
现在谈到您的数据模型时,范围键用于对通常一起检索的相关记录进行分组。在您的情况下,我假设还有其他用户具有相同的 UserId
但创建日期不同。如果您不需要将用户分组在一起(并按创建日期排序),那么只需要哈希键就足够了。
另外两篇文章可能会帮助您确定用于不同场景的正确密钥类型:
dynamodb 中的哈希范围有什么用table?
什么时候使用什么PK类型?
我将 dynamoDB 与 C# 驱动程序一起使用,并且我有一个 table 用户。 table 有以下两个主键:
- 主哈希键:UserId(数字)
- 主要范围键:已创建(字符串)
然后我尝试在上下文中使用 Load 方法加载用户,如下所示:
_dynamoDBClient.Context.Load<User>(12345);
然后我得到以下异常:
"exceptionMessage": "Unable to convert range key value for property Created", "exceptionType": "System.InvalidOperationException"
如果我加载特定范围键,例如:
_dynamoDBClient.Context.Load<User>(12345, "2015-01-01");
一切正常。
即使 table 有一个范围键,有没有一种方法可以仅使用主哈希键来加载键入的用户?我不想每次需要获取用户时都发送创建日期。还是我误解了 dynamoDB 中范围键的概念?
Load
方法用于从您的 table 中检索单个项目,因此您需要提供完整的主键。
在幕后,Load
方法实际上从本地 AWS DynamoDB API 调用 GetItem
操作,它对需要提供的属性有以下要求:
For the primary key, you must provide all of the attributes. For example, with a hash type primary key, you only need to provide the hash attribute. For a hash-and-range type primary key, you must provide both the hash attribute and the range attribute.
来源: http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html
如果您的 table 的主键由散列键和范围键组成,那么您必须提供两者才能匹配单个项目。
现在谈到您的数据模型时,范围键用于对通常一起检索的相关记录进行分组。在您的情况下,我假设还有其他用户具有相同的 UserId
但创建日期不同。如果您不需要将用户分组在一起(并按创建日期排序),那么只需要哈希键就足够了。
另外两篇文章可能会帮助您确定用于不同场景的正确密钥类型:
dynamodb 中的哈希范围有什么用table?
什么时候使用什么PK类型?