我正在使用AWS-放大来定义我的APPESNC模式。
我有以下简化模式:
type Country @model {
id: ID!
name: String!
code: String!
tracks: [Track] @connection(name: "CountryTrack")
}
type Track @model
id: ID!
name: String!
country: Country! @connection(name: "CountryTrack")
lng: Float
lat: Float
length: Float
curves: Int
website: String
trackImage: String
information: String
}
放大为模型生成过滤器输入。但是,它不包括连接类型。
我想过滤基于国家的轨道。
Dynamodb表确实有一个trackCountryId
,在扫描操作中,我可以简单地根据id进行筛选。
但是,这在graphql模式中不起作用。因为FiterInput中不包括trackCountryId
。
有人知道如何解决这个问题吗?
Amplify CLI在国家/地区
类型上创建列表跟踪
查询冲突解决程序和跟踪
冲突解决程序。如果要根据countryId筛选所有曲目,则必须在以下步骤中手动添加,这些步骤基本上是上述生成的查询解析器的混合:
-
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
),自动生成这些解析器。
Amplify是否支持此处概述的脱机功能:https://docs.aws.amazon.com/appsync/latest/devguide/building-a-client-app-react.html#offline-背景 我应该这样设置吗?https://aws.github.io/aws-amplify/media/api_guide#configuration-for-graphq
问题内容: 我想知道,中的类(对于Web应用程序)是否有任何注释?也许@Filter吧? 我想在项目中添加自定义过滤器。 《 Spring Boot参考指南 》提到了关于 ,但是我不确定如何使用它。 问题答案: 如果您要设置第三方过滤器,则可以使用FilterRegistrationBean。例如相当于web.xml 这些将是@Configuration文件中的两个bean 上面已经用spring
我想在我的项目中添加一个自定义筛选器。 Spring Boot参考指南提到了关于,但我不确定如何使用它。
问题内容: 我的应用程序中有2个过滤器。根据某些条件,我想选择是否执行第二个过滤器。有没有办法做到这一点? 我做了一些谷歌搜索,但没有成功。我希望请求继续执行而不执行第二个过滤器。那可能吗? 任何帮助将不胜感激。 问题答案: 您可以在请求中设置一个属性,然后在第二个过滤器中对其进行检查。 您可以像这样简化上面的代码: 这样,您只需检查属性“ executeSecondFilter”的存在
我为appsync迁移了一个Flatter本地插件来放大。现在我想知道在appsync控制台中更新GraphQL之后,如何在我的Flatter项目的android部分生成代码。 最初我使用:
我正在处理一个安全过滤器,它需要根据path变量的值做一些检查。我试着这样做: 但映射始终为空,因此我的筛选器的优先级似乎高于在请求中填充属性的。 我已尝试添加以下配置: 这没有帮助,筛选器是在调用之前执行的。 在我的安全过滤器中,我获取Auth头,解密它,从中获取并将它与路径var值进行比较。如果这些ID不匹配,我返回403。 我想知道是否有可能覆盖这两个动作的顺序。或者,也许,有其他的方法来检