AppSync DynamoDb,提供的关键元素与架构不匹配
AppSync DynamoDb, provided key element does not match the schema
我正在尝试在 AppSync 中创建自定义查询类型以查询默认 ID 以外的字段。
注意:我没有配置排序键或全局二级索引。
数据源已连接到 DynamoDB GameStats table。该记录存在于 table 中,但当我查询时,我得到 "The provided key element does not match the schema"。
query getGameByMeetupId {
getGameByMeetupId(meetupId: "259028625") {
name
field
year
month
}
}
查询:
getGameByMeetupId(meetupId: String): GameStats
请求映射模板:
{
"version": "2017-02-28",
"operation": "GetItem",
"key": {
"meetupId": $util.dynamodb.toDynamoDBJson($ctx.args.meetupId)
}
}
响应映射模板:
$utils.toJson($ctx.result)
错误信息:
{
"data": {
"getGameByMeetupId": null
},
"errors": [
{
"path": [
"getGameByMeetupId"
],
"data": null,
"errorType": "DynamoDB:AmazonDynamoDBException",
"errorInfo": null,
"locations": [
{
"line": 2,
"column": 3,
"sourceName": null
}
],
"message": "The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException; Request ID: MC71RFG6U85PBICS2OA714TLB7VV4KQNSO5AEMVJF66Q9ASUAAJG)"
}
]
}
要使用 DynamoDB Query
,您必须为分区键指定一个值。
您提到您的 table 具有 'default id' 属性。那是你的分区键吗?如果是这样,您有两个选择:
1) 将 Query
更改为 Scan
,并在 meetupId
属性上指定过滤器
2) 添加一个 GSI,将 meetupId
设置为分区键,然后更新 Query
您已经必须以 GSI 为目标,而不是基础 table
如果您仍然遇到问题,请确保仔细检查解析器是否映射到 AppSync 中的数据源。我的由于某种原因没有附加,并导致同样的错误。
我正在尝试在 AppSync 中创建自定义查询类型以查询默认 ID 以外的字段。
注意:我没有配置排序键或全局二级索引。
数据源已连接到 DynamoDB GameStats table。该记录存在于 table 中,但当我查询时,我得到 "The provided key element does not match the schema"。
query getGameByMeetupId {
getGameByMeetupId(meetupId: "259028625") {
name
field
year
month
}
}
查询:
getGameByMeetupId(meetupId: String): GameStats
请求映射模板:
{
"version": "2017-02-28",
"operation": "GetItem",
"key": {
"meetupId": $util.dynamodb.toDynamoDBJson($ctx.args.meetupId)
}
}
响应映射模板:
$utils.toJson($ctx.result)
错误信息:
{
"data": {
"getGameByMeetupId": null
},
"errors": [
{
"path": [
"getGameByMeetupId"
],
"data": null,
"errorType": "DynamoDB:AmazonDynamoDBException",
"errorInfo": null,
"locations": [
{
"line": 2,
"column": 3,
"sourceName": null
}
],
"message": "The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException; Request ID: MC71RFG6U85PBICS2OA714TLB7VV4KQNSO5AEMVJF66Q9ASUAAJG)"
}
]
}
要使用 DynamoDB Query
,您必须为分区键指定一个值。
您提到您的 table 具有 'default id' 属性。那是你的分区键吗?如果是这样,您有两个选择:
1) 将 Query
更改为 Scan
,并在 meetupId
属性上指定过滤器
2) 添加一个 GSI,将 meetupId
设置为分区键,然后更新 Query
您已经必须以 GSI 为目标,而不是基础 table
如果您仍然遇到问题,请确保仔细检查解析器是否映射到 AppSync 中的数据源。我的由于某种原因没有附加,并导致同样的错误。