Amazon dynamodb DynamoDB-无法读取项:提供的键元素与架构不匹配
我的代码: def查询咨询令牌(持有人id) dynamodb=Aws::dynamodb::Client.newAmazon dynamodb DynamoDB-无法读取项:提供的键元素与架构不匹配,amazon-dynamodb,Amazon Dynamodb,我的代码: def查询咨询令牌(持有人id) dynamodb=Aws::dynamodb::Client.new table_name = "pix_owner_confirmation_token" holder_id = holder_id params = { table_name: table_name, key: { holder_id: holder_id, }, } begin result = dynamodb.get_item
table_name = "pix_owner_confirmation_token"
holder_id = holder_id
params = {
table_name: table_name,
key: {
holder_id: holder_id,
},
}
begin
result = dynamodb.get_item(params)
puts "%s - %s",
result.item["holder_id"],
result.item["address"],
result.item["token"]
rescue Aws::DynamoDB::Errors::ServiceError => error
puts "Unable to read item:"
puts "#{error.message}"
binding.pry
end
结束
我的结果是:
无法读取项目:
提供的键元素与架构不匹配发送到
get\u item
的参数指定了名为holder\u id
的主键:
params = {
table_name: table_name,
key: {
holder_id: holder_id,
}
}
但是,您已经指出,您的表有一个名为token
的主键。要解决此问题,您需要在参数中提供主键的名称:
params = {
table_name: table_name,
key: {
token:<your token here>,
}
}
params={
表名称:表名称,
关键:{
令牌:,
}
}
您的表主键是如何定义的?Chave de partição primária:token(String)谢谢,但是,我需要通过holder_id查询该令牌,这可能吗?如果holder_id
不是您的主键的一部分,您唯一的选择将是扫描
操作。记住,DynamoDB通过主键存储数据。如果要按项目的主键搜索项目,可以使用快速查询操作。如果需要按不属于主键的项的属性进行搜索,则需要使用scan
操作跨所有分区进行搜索。