Extensões - AWS AppSync

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

nota

Agora, oferecemos suporte principalmente ao tempo de execução APPSYNC _JS e sua documentação. Considere usar o tempo de execução APPSYNC _JS e seus guias aqui.

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

$extensions.evictFromApiCache(String, String, Object) : 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.

nota

Esse utilitário funciona somente para mutações, não para consultas.

$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 conforme descrito na seção a seguir.

nota

Você pode usar esse método de extensão somente nos modelos de mapeamento de resposta de um resolvedor de assinatura.

$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 conforme descrito na seção a seguir.

nota

Você pode usar esse método de extensão somente nos modelos de mapeamento de resposta de um resolvedor de assinatura.

$extensions.invalidateSubscriptions(invalidationJsonObject)

Usado para iniciar uma invalidação de assinatura a partir de uma mutação. O argumento é invalidationJsonObject conforme descrito na seção a seguir.

nota

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

O JSON objeto 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 }

Campo: fieldName

O tipo de string fieldName refere-se a um campo definido no esquema GraphQL que corresponde a fieldName na carga de notificação de assinatura. Quando uma correspondência é encontrada, o value do campo do esquema GraphQL é comparado a value do filtro de notificação de assinatura. No exemplo a seguir, o filtro fieldName corresponde ao campo service definido em determinado tipo de GraphQL. Se a carga de notificação contiver um campo service com um value equivalente a AWS AppSync, o filtro será avaliado como true:

{ "fieldName" : "service", "operator" : "eq", "value" : "AWS AppSync" }

Campo: valor

O valor pode ser de um tipo diferente com base no operador:

  • Um único número ou booleano

    • Exemplo de string: "test", "service"

    • Exemplo de número: 1, 2, 45.75

    • Exemplo de booliano: true, false

  • Pares de números ou strings

    • Exemplo de par de strings: ["test1","test2"], ["start","end"]

    • Exemplo de par de números: [1,4], [67,89], [12.45, 95.45]

  • Matrizes de números ou strings

    • Exemplo de matriz de strings: ["test1","test2","test3","test4","test5"]

    • Exemplo de matriz numérica: [1,2,3,4,5], [12.11,46.13,45.09,12.54,13.89]

Campo: operador

Uma string que diferencia maiúsculas de minúsculas com os seguintes valores possíveis:

Operador Descrição Tipos de valores possíveis
eq Equal inteiro, flutuante, string, booleano
um Not equal inteiro, flutuante, string, booleano
le Menor ou igual a inteiro, flutuante, string
lt Menor que inteiro, flutuante, string
idade Maior ou igual a inteiro, flutuante, string
gt Maior que inteiro, flutuante, string
contém Verifica se há uma subsequência ou valor no conjunto. inteiro, flutuante, string
notContains Verifica a ausência de uma subsequência ou ausência de um valor no conjunto. inteiro, flutuante, string
beginsWith Verifica se há um prefixo. string
em Verifica os elementos correspondentes que estão na lista. Matriz de números inteiros, flutuantes ou strings
notIn Verifica se há elementos correspondentes que não estão na lista. Matriz de números inteiros, flutuantes ou strings
entre Entre dois valores inteiro, flutuante, string
containsAny Contém elementos comuns inteiro, flutuante, string

A tabela a seguir descreve como cada operador é usado na notificação de assinatura.

eq (equal)

O operador eq avalia como true se o valor do campo de notificação de assinatura corresponde e é estritamente igual ao valor do filtro. No exemplo a seguir, o filtro avalia como true se a notificação de assinatura tem um campo service com o valor equivalente a AWS AppSync.

Tipos de valores possíveis: inteiro, flutuante, string, booleano

{ "fieldName" : "service", "operator" : "eq", "value" : "AWS AppSync" }
ne (not equal)

O operador ne avalia como true se o valor do campo de notificação de assinatura for diferente do valor do filtro. No exemplo a seguir, o filtro avalia como true se a notificação de assinatura tem um campo service com valor diferente de AWS AppSync.

Tipos de valores possíveis: inteiro, flutuante, string, booleano

{ "fieldName" : "service", "operator" : "ne", "value" : "AWS AppSync" }
le (less or equal)

O operador le avalia como true se o valor do campo de notificação de assinatura é menor ou igual ao valor do filtro. No exemplo a seguir, o filtro avalia como true se a notificação de assinatura tem um campo size com valor menor ou igual a 5.

Tipos de valores possíveis: inteiro, flutuante, string

{ "fieldName" : "size", "operator" : "le", "value" : 5 }
lt (less than)

O operador lt avalia como true se o valor do campo de notificação de assinatura for menor que o valor do filtro. No exemplo a seguir, o filtro avalia como true se a notificação de assinatura tem um campo size com valor inferior a 5.

Tipos de valores possíveis: inteiro, flutuante, string

{ "fieldName" : "size", "operator" : "lt", "value" : 5 }
ge (greater or equal)

O operador ge avalia como true se o valor do campo de notificação de assinatura é maior ou igual ao valor do filtro. No exemplo a seguir, o filtro avalia como true se a notificação de assinatura tem um campo size com valor maior ou igual a 5.

Tipos de valores possíveis: inteiro, flutuante, string

{ "fieldName" : "size", "operator" : "ge", "value" : 5 }
gt (greater than)

O operador gt avalia como true se o valor do campo de notificação de assinatura é maior que o valor do filtro. No exemplo a seguir, o filtro avalia como true se a notificação de assinatura tem um campo size com valor maior que 5.

Tipos de valores possíveis: inteiro, flutuante, string

{ "fieldName" : "size", "operator" : "gt", "value" : 5 }
contains

O operador contains verifica uma substring, subsequência ou valor em um conjunto ou item único. Um filtro com o operador contains avalia como true se o valor do campo de notificação de assinatura contém o valor do filtro. No exemplo a seguir, o filtro avalia como true se a notificação de assinatura possui um campo seats com o valor da matriz contendo o valor 10.

Tipos de valores possíveis: inteiro, flutuante, string

{ "fieldName" : "seats", "operator" : "contains", "value" : 10 }

Em outro exemplo, o filtro avalia como true se a notificação de assinatura possui um campo event com launch como substring.

{ "fieldName" : "event", "operator" : "contains", "value" : "launch" }
notContains

O operador notContains verifica a ausência de uma substring, subsequência ou valor em um conjunto ou item único. O filtro com o operador notContains avalia como true se o valor do campo de notificação de assinatura não contém o valor do filtro. No exemplo a seguir, o filtro avalia como true se a notificação de assinatura possui um campo seats com o valor da matriz não contendo o valor 10.

Tipos de valores possíveis: inteiro, flutuante, string

{ "fieldName" : "seats", "operator" : "notContains", "value" : 10 }

Em outro exemplo, o filtro avalia como true se a notificação de assinatura possui um valor de campo event sem launch como sua subsequência.

{ "fieldName" : "event", "operator" : "notContains", "value" : "launch" }
beginsWith

O operador beginsWith verifica se há um prefixo em uma string. O filtro que contém o operador beginsWith avalia como true se o valor do campo de notificação de assinatura começa com o valor do filtro. No exemplo a seguir, o filtro avalia como true se a notificação de assinatura tem um campo service com um valor que começa com AWS.

Tipo de valor possível: string

{ "fieldName" : "service", "operator" : "beginsWith", "value" : "AWS" }
in

O operador in verifica os elementos correspondentes em uma matriz. Um filtro com o operador in avalia como true se o valor do campo de notificação de assinatura contém o valor do filtro. No exemplo a seguir, o filtro avalia como true se a notificação de assinatura possui um campo severity com um dos valores presentes no matriz: [1,2,3].

Tipo de valor possível: matriz de número inteiro, flutuante ou string

{ "fieldName" : "severity", "operator" : "in", "value" : [1,2,3] }
notIn

O operador notIn verifica se há elementos ausentes em uma matriz. O filtro que contém o operador notIn avalia como true se o valor do campo de notificação de assinatura não existe na matriz. No exemplo a seguir, o filtro avalia como true se a notificação de assinatura possui um campo severity com um dos valores não presentes no matriz: [1,2,3].

Tipo de valor possível: matriz de número inteiro, flutuante ou string

{ "fieldName" : "severity", "operator" : "notIn", "value" : [1,2,3] }
between

O operador between verifica valores entre dois números ou strings.​ O filtro que contém o operador between avalia como true se o valor do campo de notificação de assinatura está entre o par de valores do filtro. No exemplo a seguir, o filtro avalia como true se a notificação de assinatura possui um campo severity com valores 2,3,4.

Tipo de valor possível: par de número inteiro, flutuante ou string

{ "fieldName" : "severity", "operator" : "between", "value" : [1,5] }
containsAny

O operador containsAny verifica elementos comuns em matrizes. Um filtro com o operador containsAny avalia como true se a interseção do valor do conjunto de campos de notificação de assinatura e do valor do conjunto de filtros não está vazia. No exemplo a seguir, o filtro avalia como true se a notificação de assinatura tem um campo seats com um valor de matriz contendo 10 ou 15. Isso significa que o filtro avaliará como true se a notificação de assinatura tivesse um valor de campo seats [10,11] ou [15,20,30].

Tipos de valores possíveis: inteiro, flutuante ou string

{ "fieldName" : "seats", "operator" : "containsAny", "value" : [10, 15] }

ANDlógica

Você pode combinar vários filtros usando a AND lógica definindo várias entradas dentro do filters objeto na filterGroup matriz. No exemplo a seguir, os filtros avaliam true se a notificação de assinatura tem um userId campo com um valor equivalente a 1 AND um valor de group campo de Admin ouDeveloper.

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

Lógica OR

Você pode combinar vários filtros usando a lógica OR definindo vários objetos de filtro na matriz filterGroup. No exemplo a seguir, os filtros avaliam como true se a notificação de assinatura tem um campo userId com um valor equivalente a 1 OR um valor de campo group de Admin ou Developer.

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

Exceções

Observe que existem várias restrições para o uso de filtros:

  • No objeto filters, pode haver no máximo cinco itens fieldName exclusivos por filtro. Isso significa que você pode combinar no máximo cinco fieldName objetos individuais usando a AND lógica.

  • Pode haver no máximo vinte valores para o operador containsAny.

  • Pode haver no máximo cinco valores para os operadores in e notIn.

  • Cada string pode ter no máximo 256 caracteres.

  • Cada comparação de string diferencia maiúsculas e minúsculas.

  • A filtragem de objetos aninhados permite até cinco níveis aninhados de filtragem.

  • Cada filterGroup pode ter no máximo 10 filters. Isso significa que você pode combinar no máximo 10 filters usando a lógica OR.

    • O operador in é um caso especial da lógica OR. No exemplo a seguir, existem dois filters:

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

      O grupo de filtros anterior é avaliado da seguinte forma e conta para o limite máximo de filtros:

      { "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" } ] } ] }

Argumento: invalidationJsonObject

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.

    $extensions.invalidateSubscriptions({ "subscriptionField": "onUserDelete", "payload": { "group": "Developer" "type" : "Full-Time" } })