我在stackoverflow上看到了类似的问题,但答案无法解决我的问题
我在我的API GETWAY中创建了一个GET
类型的资源。在我的查询字符串中,我正在传递以下内容:
[email protected]
要么
racf=XXXX&[email protected]
我收到此错误:
提供的关键元素与架构不匹配
但是,如果我使用主键,它可以工作。
racf=XXXX
我在dynamoDB中为email属性创建了一个索引
LAMBDA功能:
case 'GET':
if (event.queryStringParameters) {
dynamo.getItem({
TableName: "eventregistration-db",
Key:{
//"racf": event.queryStringParameters.racf,
"email": event.queryStringParameters.email
}
},done);
} else {
dynamo.scan({ TableName: tableName }, done);
}
break;
看起来email
不是您的DynamoDb表的Primary Key的一部分。
对于getItem
,您必须使用表列,表的主键(分区键和可选的排序键)由组成。
scan
不需要任何密钥,因为它在桌面上进行了全面搜索 - 这就是为什么它在这种情况下有效。
将email
(和racf
)设置为表的主键以使其可用。
如果要使用索引,则必须使用query
:
dynamo.query({
TableName: tableName,
IndexName: indexName,
KeyConditionExpression: "email = :email",
ExpressionAttributeValues: {
":email": event.queryStringParameters.email
}
}, done);