Amplify CLI开箱即用地创建listTracks
查询+解析器和类型tracks
解析器。Country
如果您想根据 countryId 过滤所有Track,则必须在以下步骤中手动添加,这实际上是上述生成的查询 + 解析器的混合:
->在你的 Schema中:在 中添加这个type Query
,然后点击“Save Schema”:
listTracksByCountry(countryId: ID!, limit: Int, nextToken: String, sortDirection: ModelSortDirection): ModelTrackConnection
->将解析器附加到您刚刚添加的此查询字段,然后单击“保存解析器”:
选择TrackTable作为您的数据源名称
请求映射模板:
#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
}
]
}
}
}
这似乎是一个非常常见的用例,所以请随意在这里创建一个问题,如果它不存在,然后我们可以让 Amplify CLI ( amplify add api
) 自动生成这些解析器。