DynamoDB 是否存在允许重复主键的条件?

Are there conditions under which DynamoDB allows for a duplicate primary key?

在使用 AWS Javascript SDK 对 dynamo table 执行 updateItem 操作时,我看到第二行使用相同的主键写入,这显然与文档相反。

我正在使用哈希字符串键 "user_id"。

初始写入:

var params = {
  Item: {
    user_id : {S: "foo"},
    is_authorized: {BOOL: false},
  },
  TableName: 'MyTable'
};
db.putItem(params, function(err, data){
  if(err){
    console.log(err);
  }else{
    console.log(data);
  }
});

更新尝试

var updateParams = {
  Key: {
    user_id : {S: "foo"},
  },
  AttributeUpdates: {
    confirmationCode: {Action: "PUT", Value: {S: "key"}},
    phone: {Action: 'PUT', Value: {S: "1234567}},
    is_authorized: {Action: 'PUT', Value: {BOOL: false}},
    confirmAttempts: {Action: 'PUT', Value: {N: "1"}}
  },
  TableName: 'MyTable'
};

db.updateItem(params, function(err, data){
  if(err){
    response = err;
    console.log("The error was: " + err);
  }else{
    response = data;
    console.log(data);
  }
});

供可能遇到此问题的其他人参考:

这个问题是由 whitespace 引起的,特别是一些主键字符串末尾的尾随 space。至少从控制台中查看 Dynamo 记录不会转换白色space 字符,因此这是一个不可见的问题。