

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Extensões
<a name="extensions-js"></a>

`extensions` contém um conjunto de métodos para realizar ações adicionais nos seus resolvedores.

## Extensões do cache
<a name="caching-extensions-js-list"></a>

**`extensions.evictFromApiCache(typeName: string, fieldName: string, keyValuePair: Record<string, any>) : Object`**  
Elimina um item do cache do lado do AWS AppSync servidor. O primeiro argumento é o nome do tipo. O segundo argumento é o nome do campo. O terceiro argumento é um objeto contendo itens do par de chave/valor que especificam o valor da chave de armazenamento em cache. Você deve colocar os itens no objeto na mesma ordem das chaves de cache em `cachingKey` do resolvedor em cache. Para obter mais informações sobre armazenamento em cache, consulte [Comportamento de cache](https://docs.aws.amazon.com/appsync/latest/devguide/enabling-caching.html#caching-behavior).  
**Exemplo 1:**  
Este exemplo remove os itens que foram armazenados em cache para um resolvedor chamado `Query.allClasses` no qual uma chave de cache chamada `context.arguments.semester` foi usada. Quando a mutação é chamada e o resolvedor é executado, se uma entrada for limpa com sucesso, a resposta conterá um valor `apiCacheEntriesDeleted` no objeto de extensões que mostra quantas entradas foram excluídas.  

```
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;
}
```
Essa função funciona **somente** para mutações, não para consultas.

## Extensões de assinatura
<a name="subscription-extensions-js-list"></a>

**`extensions.setSubscriptionFilter(filterJsonObject)`**  
Define filtros de assinatura aprimorados. Cada evento de notificação de assinatura é avaliado em relação aos filtros de assinatura fornecidos e envia notificações aos clientes se todos os filtros forem avaliados como `true`. O argumento é `filterJsonObject` (Mais informações sobre esse argumento podem ser encontradas abaixo na filterJsonObject seção *Argumento:*). Consulte [Filtragem de assinatura avançada](https://docs.aws.amazon.com/appsync/latest/devguide/aws-appsync-real-time-enhanced-filtering.html).  
Você pode usar esse método de extensão somente no manipulador de resposta de um resolvedor de assinatura. Além disso, recomendamos usar `util.transform.toSubscriptionFilter` para criar seu filtro.

**`extensions.setSubscriptionInvalidationFilter(filterJsonObject)`**  
Define os filtros de invalidação da assinatura. Os filtros de assinatura são avaliados em relação à carga de invalidação e, em seguida, invalidam determinada assinatura se os filtros forem avaliados como `true`. O argumento é `filterJsonObject` (Mais informações sobre esse argumento podem ser encontradas abaixo na filterJsonObject seção *Argumento:*). Consulte [Filtragem de assinatura avançada](https://docs.aws.amazon.com/appsync/latest/devguide/aws-appsync-real-time-enhanced-filtering.html).  
Você pode usar esse método de extensão somente no manipulador de resposta de um resolvedor de assinatura. Além disso, recomendamos usar `util.transform.toSubscriptionFilter` para criar seu filtro.

**`extensions.invalidateSubscriptions(invalidationJsonObject)`**  
Usado para iniciar uma invalidação de assinatura a partir de uma mutação. O argumento é `invalidationJsonObject` (Mais informações sobre esse argumento podem ser encontradas abaixo na invalidationJsonObject seção *Argumento:*).  
Essa extensão pode ser usada somente nos modelos de mapeamento de resposta dos resolvedores de mutação.  
Você só pode usar no máximo cinco chamadas de método `extensions.invalidateSubscriptions()` exclusivas em uma única solicitação. Se você exceder esse limite, receberá um erro do GraphQL.

## Argumento: filterJsonObject
<a name="extensions-filterJsonObject-js"></a>

O objeto JSON define filtros de assinatura ou de invalidação. É uma série de filtros em um `filterGroup`. Cada filtro é uma coleção de filtros individuais.

```
{
    "filterGroup": [
        {
           "filters" : [
                 {
                    "fieldName" : "userId",
                    "operator" : "eq",
                    "value" : 1
                }
           ]
           
        },
        {
           "filters" : [
                {
                    "fieldName" : "group",
                    "operator" : "in",
                    "value" : ["Admin", "Developer"]
                }
           ]
           
        }
    ]
}
```

Cada filtro tem três atributos: 
+ `fieldName` – O campo do esquema GraphQL.
+ `operator` – O tipo de operador.
+ `value` – Os valores a serem comparados com o valor `fieldName` da notificação de assinatura.

Veja a seguir um exemplo de atribuição desses atributos:

```
{
 "fieldName" : "severity",
 "operator" : "le",
 "value" : context.result.severity
}
```

## Argumento: invalidationJsonObject
<a name="extensions-invalidationJsonObject-js"></a>

O `invalidationJsonObject` define o seguinte:
+ `subscriptionField` – A assinatura do esquema GraphQL a ser invalidada. Uma única assinatura, definida como uma string em `subscriptionField`, é considerada invalidada.
+ `payload` – Uma lista de pares de valores-chave que é usada como entrada para invalidar assinaturas se o filtro de invalidação for avaliado como `true` em relação aos seus valores.

  O exemplo a seguir invalida clientes inscritos e conectados usando a assinatura de `onUserDelete` quando o filtro de invalidação definido no resolvedor de assinatura é avaliado como `true` em relação ao valor `payload`.

  ```
  export const request = (ctx) => ({ payload: null });
  
  export function response(ctx) {
  	extensions.invalidateSubscriptions({
  		subscriptionField: 'onUserDelete',
  		payload: { group: 'Developer', type: 'Full-Time' },
  	});
  	return ctx.result;
  }
  ```