Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
nota
Ahora admitimos de forma básica el tiempo de ejecución APPSYNC_JS y su documentación. Considere la opción de utilizar el tiempo de ejecución APPSYNC_JS y sus guías aquí.
$extensions
contiene un conjunto de métodos para realizar acciones adicionales en sus solucionadores.
$extensions.evictFromApiCache(String, String, Object) : Object
-
Expulsa un elemento de la memoria caché del AWS AppSync servidor. El primer argumento es el nombre de tipo. El segundo argumento es el nombre de campo. El tercer argumento es un objeto que contiene elementos de pares clave-valor que especifican el valor clave de almacenamiento en caché. Debe colocar los elementos del objeto en el mismo orden que las claves de almacenamiento en caché del elemento
cachingKey
del solucionador almacenado en caché.nota
Esta utilidad solo funciona para mutaciones, no para consultas.
$extensions.setSubscriptionFilter(filterJsonObject)
-
Define filtros de suscripción mejorados. Cada evento de notificación de suscripción se evalúa con respecto a los filtros de suscripción proporcionados y envía notificaciones a los clientes si todos los filtros se evalúan como
true
. El argumento esfilterJsonObject
, tal y como se describe a la siguiente sección.nota
Puede utilizar este método de extensión solo en las plantillas de mapeo de respuestas de un solucionador de suscripción.
$extensions.setSubscriptionInvalidationFilter(filterJsonObject)
-
Define los filtros de invalidación de suscripciones. Los filtros de suscripción se evalúan con respecto a la carga de invalidación y, a continuación, invalidan una suscripción determinada si los filtros se evalúan como
true
. El argumento esfilterJsonObject
, tal y como se describe a la siguiente sección.nota
Puede utilizar este método de extensión solo en las plantillas de mapeo de respuestas de un solucionador de suscripción.
$extensions.invalidateSubscriptions(invalidationJsonObject)
-
Se utiliza para iniciar la invalidación de una suscripción a partir de una mutación. El argumento es
invalidationJsonObject
, tal y como se describe a la siguiente sección.nota
Esta extensión solo se puede usar en las plantillas de mapeo de respuestas de los solucionadores de mutaciones.
Solo puede usar como máximo cinco llamadas al método
$extensions.invalidateSubscriptions()
únicas en una sola solicitud. Si supera este límite, recibirá un error de GraphQL.
Argumento: filterJsonObject
El objeto JSON define los filtros de suscripción o invalidación. Es una matriz de filtros en un filterGroup
. Cada filtro es una colección de filtros individuales.
{
"filterGroup": [
{
"filters" : [
{
"fieldName" : "userId",
"operator" : "eq",
"value" : 1
}
]
},
{
"filters" : [
{
"fieldName" : "group",
"operator" : "in",
"value" : ["Admin", "Developer"]
}
]
}
]
}
Cada filtro tiene tres atributos:
-
fieldName
: campo de esquema de GraphQL. -
operator
: tipo de operador. -
value
: valores que se van a comparar con el valorfieldName
de notificación de suscripción.
A continuación se muestra un ejemplo de asignación de estos atributos:
{
"fieldName" : "severity",
"operator" : "le",
"value" : $context.result.severity
}
Campo: fieldName
El tipo de cadena fieldName
hace referencia a un campo definido en el esquema de GraphQL que coincide con el fieldName
en la carga útil de notificaciones de suscripción. Cuando se encuentra una coincidencia, el value
del campo de esquema de GraphQL se compara con el value
del filtro de notificaciones de suscripción. En el siguiente ejemplo, el filtro fieldName
coincide con el campo service
definido en un tipo de GraphQL determinado. Si la carga útil de notificaciones contiene un campo service
con un value
equivalente a AWS
AppSync
, el filtro se evalúa como true
:
{
"fieldName" : "service",
"operator" : "eq",
"value" : "AWS AppSync"
}
Campo: valor
El valor puede ser de un tipo diferente según el operador:
-
Un solo número o booleano
-
Ejemplos de cadena:
"test"
y"service"
-
Ejemplos de número:
1
,2
y45.75
-
Ejemplos de booleano:
true
yfalse
-
-
Pares de números o cadenas
-
Ejemplo de par de cadenas:
["test1","test2"]
y["start","end"]
-
Ejemplo de par de números:
[1,4]
,[67,89]
y[12.45, 95.45]
-
-
Matrices de números o cadenas
-
Ejemplo de matriz de cadenas:
["test1","test2","test3","test4","test5"]
-
Ejemplo de matriz de números:
[1,2,3,4,5]
y[12.11,46.13,45.09,12.54,13.89]
-
Campo: operador
Una cadena que distingue entre mayúsculas y minúsculas con los siguientes valores posibles:
Operador | Descripción | Tipos de valor posibles |
---|---|---|
eq | Igualdad | entero, flotante, cadena, booleano |
¿Uno | Desigualdad | entero, flotante, cadena, booleano |
le | Menor que o igual a | entero, flotante, cadena |
lt | Menor que | entero, flotante, cadena |
edad | Mayor que o igual a | entero, flotante, cadena |
gt | Mayor que | entero, flotante, cadena |
contains | Comprueba si hay una subsecuencia o un valor en el conjunto. | entero, flotante, cadena |
no contiene | Comprueba la ausencia de una subsecuencia o la ausencia de un valor en el conjunto. | entero, flotante, cadena |
Empieza con | Comprueba si hay un prefijo. | cadena |
in | Comprueba si hay elementos coincidentes en la lista. | Matriz de números enteros, flotantes o cadenas |
notIn | Comprueba si hay elementos coincidentes que no están en la lista. | Matriz de números enteros, flotantes o cadenas |
entre | Entre dos valores | entero, flotante, cadena |
Contiene cualquier | Contiene elementos comunes | entero, flotante, cadena |
En la siguiente tabla se describe la utilización de cada operador en la notificación de suscripción.
El operador eq
se evalúa como true
si el valor del campo de notificación de suscripción coincide y es igual al valor del filtro de forma estricta. En el siguiente ejemplo, el filtro se evalúa como true
si la notificación de suscripción tiene un campo service
con el valor equivalente a AWS
AppSync
.
Tipos de valor posibles: entero, flotante, cadena y booleano
{
"fieldName" : "service",
"operator" : "eq",
"value" : "AWS AppSync"
}
Lógica AND
Puede combinar varios filtros mediante la lógica AND definiendo varias entradas dentro del objeto filters
de la matriz filterGroup
. En el siguiente ejemplo, los filtros se evalúan como true
si la notificación de suscripción tiene un campo userId
con un valor equivalente a 1
Y un valor de campo group
de Admin
o Developer
.
{
"filterGroup": [
{
"filters" : [
{
"fieldName" : "userId",
"operator" : "eq",
"value" : 1
},
{
"fieldName" : "group",
"operator" : "in",
"value" : ["Admin", "Developer"]
}
]
}
]
}
Lógica OR
Puede combinar varios filtros mediante la lógica OR definiendo varios objetos de filtro dentro de la matriz filterGroup
. En el siguiente ejemplo, los filtros se evalúan como true
si la notificación de suscripción tiene un campo userId
con un valor equivalente a 1
O un valor de campo group
de Admin
o Developer
.
{
"filterGroup": [
{
"filters" : [
{
"fieldName" : "userId",
"operator" : "eq",
"value" : 1
}
]
},
{
"filters" : [
{
"fieldName" : "group",
"operator" : "in",
"value" : ["Admin", "Developer"]
}
]
}
]
}
Excepciones
Tenga en cuenta que existen varias restricciones del uso de filtros:
-
En el objeto
filters
, puede haber un máximo de cinco elementosfieldName
únicos por filtro. Esto significa que puede combinar un máximo de cinco objetosfieldName
individuales mediante la lógica AND. -
Puede haber un máximo de veinte valores para el operador
containsAny
. -
Puede haber un máximo de cinco valores para los operadores
in
ynotIn
. -
Cada cadena puede tener un máximo de 256 caracteres.
-
Cada comparación entre cadenas distingue entre mayúsculas y minúsculas.
-
El filtrado de objetos anidados permite hasta cinco niveles anidados de filtrado.
-
Cada
filterGroup
puede tener un máximo de 10filters
. Esto significa que puede combinar un máximo de 10filters
mediante la lógica OR.-
El operador
in
es un caso especial de lógica OR. En el siguiente ejemplo, hay dosfilters
:{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 }, { "fieldName" : "group", "operator" : "in", "value" : ["Admin", "Developer"] } ] } ] }
El grupo de filtros anterior se evalúa de la siguiente manera y cuenta para el límite 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
El invalidationJsonObject
define lo siguiente:
-
subscriptionField
: suscripción del esquema de GraphQL a invalidar. Se baraja la posibilidad de invalidar una suscripción única, definida como cadena en elsubscriptionField
. -
payload
: lista de pares clave-valor que se utiliza como entrada para la invalidación de suscripciones si el filtro de invalidación se evalúa comotrue
en comparación con sus valores.En el siguiente ejemplo se invalida a los clientes suscritos y conectados que utilizan la suscripción
onUserDelete
cuando el filtro de invalidación definido en el solucionador de suscripción se evalúa comotrue
en comparación con el valorpayload
.$extensions.invalidateSubscriptions({ "subscriptionField": "onUserDelete", "payload": { "group": "Developer" "type" : "Full-Time" } })