扩展程序 - AWS AppSync

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

扩展程序

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; }