本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
扩展
$extensions包含一组在解决者中执行额外操作的方法。
$extensions.evictFromApiCache(String, String, Object) :
Object
将项目从Amazon AppSync 服务器端缓存。第一个参数是类型名称。第二个参数是字段名称。第三个参数是包含键值的对象对指定缓存密钥值的项目。您必须按照缓存解析器中的缓存键的顺序将项目放入对象中的顺序cachingKey.
此实用程序仅适用于突变,不适用于查询。
$extensions.setSubscriptionFilter(filterJsonObject)
定义增强订阅筛选条件。每个订阅通知事件都会根据提供的订阅筛选条件进行评估,如果所有筛选器评估为true. 参数是filterJsonObject如描述以下.
您可以使用t他的扩展方法仅限在订阅解析器的响应映射模板中。
$extensions.setSubscriptionInvalidationFilter(filterJsonObject)
定义订阅失效过滤器。根据失效有效负载评估订阅筛选器、然后如果过滤器评估为,则使给定的订阅失效true. 参数是filterJsonObject如描述以下.
您可以使用t他的扩展方法仅限在订阅解析器的响应映射模板中。
参数:FilterjsonObject
这些区域有:定义 JSON 对象或者订阅或失效过滤器。这是一个中的一组过滤器filterGroup. 每个过滤器都是单个过滤器的集合。
{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 } ] }, { "filters" : [ { "fieldName" : "group", "operator" : "in", "value" : ["Admin", "Developer"] } ] } ] }
每个过滤器都有三属性:
-
fieldName–这些区域有:GraphQL 架构字段。 -
operator–运算符类型。 -
value–值s与订阅通知进行比较fieldName值。
以下是这些属性的示例分配:
{ "fieldName" : "severity", "operator" : "le", "value" : $context.result.severity }
字段:fieldName
字符串类型fieldName是指 GraphQL 架构中定义的与fieldName在订阅通知有效负载中。何时找到匹配,valueGraphQL 模式字段与value的订阅通知筛选器。在下例中,fieldName过滤器匹配service在给定 GraphQL 类型中定义的字段。如果通知有效负载包含service字段中包含value等效于AWS AppSync,过滤器的计算结果为true:
{ "fieldName" : "service", "operator" : "eq", "value" : "AWS AppSync" }
字段:值
v根据运算符,值可以是不同的类型:
-
单个号码或布尔值
-
字符串示例:
"test"、"service" -
数字示例:
1、2、45.75 -
布尔值示例:
true、false
-
-
对数字或字符串
-
字符串对示例:
["test1","test2"]、["start","end"] -
数字对示例:
[1,4]、[67,89]、[12.45, 95.45]
-
-
数字或字符串数组
-
字符串数组示例:
["test1","test2","test3","test4","test5"] -
数字数组示例:
[1,2,3,4,5]、[12.11,46.13,45.09,12.54,13.89]
-
字段:运算符
区分大小写的字符串,其中包含以下可能值:
| 操作符 | 描述 | 可能的值类型s |
|---|---|---|
| eq | Equal | integer, float, string, Boolean |
| ne | Not equal | integer, float, string, Boolean |
| le | Less than or equal | integer, float, string |
| lt | Less than | integer, float, string |
| ge | Greater than or equal | integer, float, string |
| gt | Greater than | integer, float, string |
| contains | Checks for a subsequence or value in the set. | integer, float, string |
| notContains | Checks for the absence of a subsequence or absence of a value in the set. | integer, float, string |
| beginsWith | Checks for a prefix. | string |
| in | Checks for matching elements that are in the list. | Array of integer, float, or string |
| notIn | Checks for matching elements that aren't in the list. | Array of integer, float, or string |
| between | Between two values | integer, float, string |
这些区域有:以下桌子描述了订阅通知中如何使用每个运算符。
AND 逻辑
您可以使用 AND 逻辑组合多个筛选条目,方法是在filters中的对象filterGroup数组。在下例中,筛选条件计算为true订阅通知是否有userId值等于的字段1还有group任一字段值Admin要么Developer.
{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 }, { "fieldName" : "group", "operator" : "in", "value" : ["Admin", "Developer"] } ] } ] }
OR 逻辑
您可以使用 OR 逻辑组合多个筛选条件,方法是在filterGroup数组。在下例中,筛选条件计算为true订阅通知是否有userId值等于的字段1或者group任一字段值Admin要么Developer.
{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 } ] }, { "filters" : [ { "fieldName" : "group", "operator" : "in", "value" : ["Admin", "Developer"] } ] } ] }
请注意,有几个限制为了使用筛选条件:
-
在
filters对象,t此处可以最多五个独一无二fieldName每个筛选条件. 该意味着你可以组合最多五个人fieldName对象使用 AND 逻辑。 -
可以的最多为 5 个值
in和notIn运算符。 -
每个字符串都能是最大值为256 个字符.
-
每个字符串比较区分大小写。
-
EACH
filterGroup可以有一个最大值为10filters. 该意味着你可以组合最大值为10filters使用 OR 逻辑。-
T他
in运算符是 OR 逻辑的特殊情况。在下例中,回复 是两个filters:{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 }, { "fieldName" : "group", "operator" : "in", "value" : ["Admin", "Developer"] } ] } ] }这些区域有:之前过滤组是评估方式如下,计入最大过滤器限制:
{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 }, { "fieldName" : "group", "operator" : "eq", "value" : "Admin" } ] }, { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 }, { "fieldName" : "group", "operator" : "eq", "value" : "Developer" } ] } ] }
-
$extensions.invalidateSubscriptions(invalidationJsonObject)
用于从突变中启动订阅失效。参数是invalidationJsonObject如描述以下.
这个扩展可以被使用仅限在变异解析程序的响应映射模板中。
参数:失效 JsonObject
这些区域有:invalidationJsonObject定义以下内容:
-
subscriptionField–这些区域有:GRaphQL 模式订阅到作废. 单个订阅,定义为subscriptionField,被考虑为无效。 -
payload–键值对列表,如果失效筛选器的计算结果为,则用作使订阅失效的输入true违背他们的价值观。以下示例作废s已订阅和连接的客户端使用
onUserDelete当订阅解决程序中定义的失效过滤器的评估结果为true反对payload值。$extensions.invalidateSubscriptions({ "subscriptionField": "onUserDelete", "payload": { "group": "Developer" "type" : "Full-Time" } })