Amplify CLI 开箱即用地创建listTracks 查询+解析器和tracks 解析器Country 类型。如果您想根据 countryId 过滤 所有 曲目,则必须在以下步骤中手动添加,这些步骤本质上是上述生成的查询 + 解析器的混合:
-> 在您的架构中:将其添加到type Query,然后点击“保存架构”:
listTracksByCountry(countryId: ID!, limit: Int, nextToken: String, sortDirection: ModelSortDirection): ModelTrackConnection
-> 附加解析器到您刚刚添加的这个查询字段,然后点击“保存解析器”:
选择 TrackTable 作为您的数据源名称
RequestMapping 模板:
#set( $limit = $util.defaultIfNull($context.args.limit, 10) )
{
"version": "2017-02-28",
"operation": "Query",
"query": {
"expression": "#connectionAttribute = :connectionAttribute",
"expressionNames": {
"#connectionAttribute": "trackCountryId"
},
"expressionValues": {
":connectionAttribute": {
"S": "$context.args.countryId"
}
}
},
"scanIndexForward": #if( $context.args.sortDirection )
#if( $context.args.sortDirection == "ASC" )
true
#else
false
#end
#else
true
#end,
"filter": #if( $context.args.filter )
$util.transform.toDynamoDBFilterExpression($ctx.args.filter)
#else
null
#end,
"limit": $limit,
"nextToken": #if( $context.args.nextToken )
"$context.args.nextToken"
#else
null
#end,
"index": "gsi-CountryTrack"
}
#if( !$result )
#set( $result = $ctx.result )
#end
$util.toJson($result)
-> 导航到控制台上的 查询 部分,然后运行以下查询:
query {
listTracksByCountry(countryId: "countryId1") {
items {
id
name
length
}
}
}
您应该能够获得您指定的 countryId 的曲目列表。就我而言,上述操作的 GraphQL 输出是:
{
"data": {
"listTracksByCountry": {
"items": [
{
"id": "trackId1",
"name": "track name 1",
"length": 1.1
},
{
"id": "trackId2",
"name": "track name 2",
"length": 1.2
}
]
}
}
}
这似乎是一个非常常见的用例,所以请随意创建一个问题here,如果它不存在,然后我们可以让 Amplify CLI (amplify add api) 自动生成这些解析器。