使用JavaScript查询DynamoDB单行报错,疑表定义有误求助
解决DynamoDB "The provided key element does not match the schema" 错误
嘿,这个错误我太熟了!百分之百是请求里的主键类型和你DynamoDB表定义的主键类型不匹配导致的。
先看你的代码:你传递的workOrder是数字类型,但如果你的表把workOrder这个主键定义成了字符串类型(S),DynamoDB就会直接抛出这个不匹配的错误——它对类型的要求非常严格,数字和数字字符串都不能混用。
给你几个具体的排查和解决步骤:
- 先确认表的主键类型:登录DynamoDB控制台,找到你的目标表,查看主键
workOrder的类型是字符串(S)还是数字(N)。 - 根据表结构修正代码:
- 如果表的
workOrder是字符串类型:把代码里的数字转成字符串,比如用String(data.workOrder)包裹,确保传递的是字符串值 - 如果表的
workOrder是数字类型:要确保data.workOrder是真正的数字类型,而不是像"123"这样的字符串数字
- 如果表的
另外,我注意到你的代码最后少了一个闭合括号),这也可能导致后续的执行问题,顺便帮你补上了。这里是修正后的示例(假设表主键是字符串类型):
function parseGET( data, callback ) { const params = { TableName: data.TableName, Key: { "workOrder": String(data.workOrder) } // 转成字符串匹配表结构 }; dynamodb.get( params, ( error, data ) => { if( error ) console.log( 'table ERROR:', error ); // 这里放你的后续逻辑 }); // 补上缺失的闭合括号 }
内容的提问来源于stack exchange,提问作者Aaron
相关产品推荐
相关产品推荐

