Amazon dynamodb DynamoDB-无法读取项:提供的键元素与架构不匹配

Amazon 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

我的代码:

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(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
操作跨所有分区进行搜索。