本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
扩展程序
extensions
包含一组在解析器中执行额外操作的方法。
extensions.evictFromApiCache(typeName: string, fieldName: string, keyValuePair: Record<string, string>) : Object
-
从 AWS AppSync 服务器端缓存中移出一个项目。第一个参数是类型名称。第二个参数是字段名称。第三个参数是一个对象,其中包含指定缓存键值的键值对项目。您必须按照与缓存解析器的
cachingKey
中的缓存键相同的顺序,将项目放入对象中。有关缓存的更多信息,请参阅缓存行为。示例 1:
该示例逐出为名为
Query.allClasses
的解析器缓存的项目,在该解析器上使用了名为context.arguments.semester
的缓存键。在调用变更并运行解析器时,如果成功清除条目,则响应在扩展对象中包含一个apiCacheEntriesDeleted
值以显示删除了多少条目。import { util, extensions } from '@aws-appsync/utils'; export const request = (ctx) => ({ payload: null }); export function response(ctx) { extensions.evictFromApiCache('Query', 'allClasses', { 'context.arguments.semester': ctx.args.semester, }); return null; }
注意
该函数仅适用于变更,而不适用于查询。
extensions.setSubscriptionFilter(filterJsonObject)
-
定义增强的订阅筛选条件。每个订阅通知事件都会根据提供的订阅筛选条件进行评估,如果所有筛选条件的评估结果均为
true
,则向客户端发送通知。参数是filterJsonObject
(有关此参数的更多信息可以在下面的参数: filterJsonObject部分中找到。)。请参阅增强订阅筛选。注意
您只能在订阅解析器的响应处理程序中使用该扩展函数。此外,我们建议使用
util.transform.toSubscriptionFilter
创建筛选条件。 extensions.setSubscriptionInvalidationFilter(filterJsonObject)
-
定义订阅失效筛选条件。根据失效负载评估订阅筛选条件,如果筛选条件的评估结果为
true
,则使给定订阅失效。参数是filterJsonObject
(有关此参数的更多信息可以在下面的参数: filterJsonObject部分中找到。)。请参阅增强订阅筛选。注意
您只能在订阅解析器的响应处理程序中使用该扩展函数。此外,我们建议使用
util.transform.toSubscriptionFilter
创建筛选条件。 extensions.invalidateSubscriptions(invalidationJsonObject)
-
用于启动变更导致的订阅失效。参数是
invalidationJsonObject
(有关此参数的更多信息可以在下面的参数: invalidationJsonObject部分中找到。)。注意
只能在变更解析器的响应映射模板中使用该扩展。
您最多只能在任何单个请求中使用 5 个唯一的
extensions.invalidateSubscriptions()
方法调用。如果超过该限制,您将收到 GraphQL 错误。
论点: filterJsonObject
该JSON对象定义了订阅或失效过滤器。它是 filterGroup
中的筛选条件数组。每个筛选条件是单独筛选条件的集合。
{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 } ] }, { "filters" : [ { "fieldName" : "group", "operator" : "in", "value" : ["Admin", "Developer"] } ] } ] }
每个筛选条件具有三个属性:
-
fieldName
- GraphQL 架构字段。 -
operator
- 运算符类型。 -
value
- 与订阅通知fieldName
值进行比较的值。
以下是这些属性的分配示例:
{ "fieldName" : "severity", "operator" : "le", "value" : context.result.severity }
论点: invalidationJsonObject
invalidationJsonObject
定义以下内容:
-
subscriptionField
- 要失效的 GraphQL 架构订阅。单个订阅(在subscriptionField
中定义为字符串)被视为失效。 -
payload
- 一个键值对列表,如果失效筛选条件根据其值评估的结果为true
,则将该列表作为使订阅失效的输入。在订阅解析器中定义的失效筛选条件根据
payload
值评估的结果为true
时,以下示例导致使用onUserDelete
订阅的订阅和连接的客户端失效。export const request = (ctx) => ({ payload: null }); export function response(ctx) { extensions.invalidateSubscriptions({ subscriptionField: 'onUserDelete', payload: { group: 'Developer', type: 'Full-Time' }, }); return ctx.result; }