我正在使用AWS控制台和NodeJS。
我有用户的dynamodb表,其中包含分区键(user_id)和排序键(company_id)以及其他属性。
我的一个属性是用户的电子邮件。电子邮件是唯一属性。
我需要通过电子邮件获取user_id,但我还没有他的user_id和company_id。
我认为我应该使用全球二级指数。
我点击了users表,打开了Indexes选项卡并为该表创建了GSI。 (name:email,type:GSI,Partition Key:email string,attributes:user_id)
我正在使用来自documentClient的方法Query。这是我的有效载荷:
payload = {
"TableName": "users",
"IndexName": "email",
"KeyConditionExpression": "#index = :index_value",
"ExpressionAttributeNames":{
"#index": "email"
},
"ExpressionAttributeValues": {
":index_value": {"S": "test@gmail.com"}
},
"ProjectionExpression": "user_id",
"ScanIndexForward": false
};
}
这是我在CloudWatch中的错误:
" errorMessage":"一个或多个参数值无效:条件参数类型与模式类型不匹配"
答案 0 :(得分:0)
我在写这个问题时找到了解决方案。 因此,当我使用documentClient时,我的有效负载应该如下所示
payload = {
"TableName": "users",
"IndexName": "email",
"KeyConditionExpression": "#index = :index_value",
"ExpressionAttributeNames":{
"#index": "email"
},
"ExpressionAttributeValues": {
":index_value": "test@gmail.com" // <----------------
},
"ProjectionExpression": "user_id",
"ScanIndexForward": false
};
}
希望对某人有帮助