React环境下更新DynamoDB表出现主键不匹配错误求助
问题原因分析
你遇到的ValidationException错误,核心是传入的分区键id类型与DynamoDB表定义的类型不匹配。
从调用代码updateData("mytable","2","2023-01-10")能看到,你传递的id是字符串类型的"2",但你的DynamoDB表中id分区键的类型应该是数字(Number)。DynamoDB是强类型数据库,键的类型必须严格匹配表结构定义,因此触发了验证错误。
解决方案
方案一:修正调用时的id类型
把调用中的字符串"2"改为数字2,确保类型和表定义一致:
updateData("mytable", 2, "2023-01-10")
方案二(不推荐,除非业务必须):修改表的分区键类型
如果业务确实需要用字符串类型的id,可以修改DynamoDB表的分区键类型为String,但注意这种操作需要重新建表(DynamoDB不支持直接修改现有键的类型),且要同步调整已有数据的类型,避免后续出现其他问题。
额外建议
为了避免类似类型问题,建议给函数参数明确类型,不要用any:
export const updateData = (tableName: string, id: number, date: string) => { // ... 现有代码 }
内容的提问来源于stack exchange,提问作者Ranjan Kumar
相关产品推荐
相关产品推荐

