我在stackoverflow上看到了类似的问题,但答案无法解决我的问题
我已经在GET
类型的API GETWAY中创建了一个资源。在我的查询字符串中,我传递了以下信息:
email=x@gmail.com
或
racf=XXXX&email=x@gmail.com
我收到此错误:
提供的key元素与架构不匹配
但是,如果我使用主键进行操作,它将起作用。
racf=XXXX
我已经在dynamoDB中为电子邮件属性创建了一个索引
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;
答案 0 :(得分:2)
似乎email
不是DynamoDb表的Primary Key的一部分。
对于getItem
,您必须使用组成表主键(分区键和可选的排序键)的表列。
scan
不需要任何键,因为它可以在表上进行完全搜索-这就是在这种情况下它可以工作的原因。
将email
(和racf
)设置为表的主键,使其可以使用。
如果要使用索引,则必须使用query
:
dynamo.query({
TableName: tableName,
IndexName: indexName,
KeyConditionExpression: "email = :email",
ExpressionAttributeValues: {
":email": event.queryStringParameters.email
}
}, done);