Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Estensioni
Nota
Ora supportiamo principalmente il runtime APPSYNC_JS e la relativa documentazione. Prendi in considerazione l'utilizzo del runtime APPSYNC_JS e delle relative guide qui.
$extensionscontiene una serie di metodi per eseguire azioni aggiuntive all'interno dei resolver.
$extensions.evictFromApiCache(String, String, Object) : Object-
Rimuove un elemento dalla cache lato server. AWS AppSync Il primo argomento è il nome del tipo. Il secondo argomento è il nome del campo. Il terzo argomento è un oggetto contenente elementi della coppia chiave-valore che specificano il valore della chiave di memorizzazione nella cache. È necessario inserire gli elementi nell'oggetto nello stesso ordine delle chiavi di memorizzazione nella cache del resolver memorizzato nella cache.
cachingKeyNota
Questa utilità funziona solo per le mutazioni, non per le interrogazioni.
$extensions.setSubscriptionFilter(filterJsonObject)-
Definisce filtri di abbonamento avanzati. Ogni evento di notifica di sottoscrizione viene valutato sulla base dei filtri di sottoscrizione forniti e invia notifiche ai clienti se tutti i filtri lo confermano.
trueL'argomento èfilterJsonObjectdescritto nella sezione seguente.Nota
È possibile utilizzare questo metodo di estensione solo nei modelli di mappatura delle risposte di un resolver di sottoscrizioni.
$extensions.setSubscriptionInvalidationFilter(filterJsonObject)-
Definisce i filtri di invalidazione dell'abbonamento. I filtri di sottoscrizione vengono valutati in base al payload di invalidazione, quindi invalidano un determinato abbonamento se i filtri restituiscono lo stesso risultato.
trueL'argomento è descritto nella sezionefilterJsonObjectseguente.Nota
È possibile utilizzare questo metodo di estensione solo nei modelli di mappatura delle risposte di un resolver di sottoscrizioni.
$extensions.invalidateSubscriptions(invalidationJsonObject)-
Utilizzato per avviare l'invalidazione dell'abbonamento a seguito di una mutazione. L'argomento è
invalidationJsonObjectdescritto nella sezione seguente.Nota
Questa estensione può essere utilizzata solo nei modelli di mappatura delle risposte dei risolutori di mutazioni.
È possibile utilizzare al massimo cinque chiamate di
$extensions.invalidateSubscriptions()metodo uniche in ogni singola richiesta. Se superi questo limite, riceverai un errore GraphQL.
Argomento: filterJsonObject
L'oggetto JSON definisce i filtri di sottoscrizione o di invalidazione. È una serie di filtri in un. filterGroup Ogni filtro è una raccolta di filtri individuali.
{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 } ] }, { "filters" : [ { "fieldName" : "group", "operator" : "in", "value" : ["Admin", "Developer"] } ] } ] }
Ogni filtro ha tre attributi:
-
fieldName— Il campo dello schema GraphQL. -
operator— Il tipo di operatore. -
value— I valori da confrontare con ilfieldNamevalore di notifica dell'abbonamento.
Di seguito è riportato un esempio di assegnazione di questi attributi:
{ "fieldName" : "severity", "operator" : "le", "value" : $context.result.severity }
Campo: FieldName
Il tipo di stringa fieldName si riferisce a un campo definito nello schema GraphQL che corrisponde al fieldName payload di notifica della sottoscrizione. Quando viene trovata una corrispondenza, il value campo dello schema GraphQL viene confrontato con quello del filtro di notifica value della sottoscrizione. Nell'esempio seguente, il fieldName filtro corrisponde al service campo definito in un determinato tipo GraphQL. Se il payload di notifica contiene un service campo con un value equivalente aAWS
AppSync, il filtro restituisce: true
{ "fieldName" : "service", "operator" : "eq", "value" : "AWS AppSync" }
Campo: valore
Il valore può essere di tipo diverso in base all'operatore:
-
Un numero singolo o booleano
-
Esempi di stringhe:,
"test""service" -
Esempi di numeri:
1,2,45.75 -
Esempi booleani:,
truefalse
-
-
Coppie di numeri o stringhe
-
Esempio di coppia di stringhe:
["test1","test2"],["start","end"] -
Esempio di coppia numerica:
[1,4],[67,89],[12.45, 95.45]
-
-
Matrici di numeri o stringhe
-
Esempio di array di stringhe:
["test1","test2","test3","test4","test5"] -
Esempio di array numerico:
[1,2,3,4,5],[12.11,46.13,45.09,12.54,13.89]
-
Campo: operatore
Una stringa con distinzione tra maiuscole e minuscole con i seguenti valori possibili:
| Operatore | Descrizione | Tipi di valori possibili |
|---|---|---|
| eq | Uguale | intero, float, stringa, booleano |
| uno | Non uguale | intero, float, stringa, booleano |
| leu | Minore di o uguale a | intero, float, stringa |
| lt | Minore di | intero, float, stringa |
| età | Maggiore di o uguale a | intero, float, stringa |
| gt | Maggiore di | intero, float, stringa |
| contiene | Verifica la presenza di una sottosequenza o di un valore nel set. | numero intero, float, stringa |
| Non contiene | Verifica l'assenza di una sottosequenza o l'assenza di un valore nell'insieme. | numero intero, float, stringa |
| Inizia con | Verifica la presenza di un prefisso. | string |
| in | Verifica la presenza di elementi corrispondenti presenti nell'elenco. | Matrice di numeri interi, float o stringhe |
| notIn | Verifica la presenza di elementi corrispondenti che non sono presenti nell'elenco. | Matrice di numeri interi, float o stringhe |
| tra | Tra due valori | numero intero, float, stringa |
| Contiene Any | Contiene elementi comuni | numero intero, float, stringa |
La tabella seguente descrive come ogni operatore viene utilizzato nella notifica di sottoscrizione.
Logica AND
È possibile combinare più filtri utilizzando la logica AND definendo più voci all'interno dell'filtersoggetto dell'filterGrouparray. Nell'esempio seguente, i filtri valutano true se la notifica di sottoscrizione ha un userId campo con un valore equivalente a 1 AND un valore di group campo pari Admin o uguale aDeveloper.
{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 }, { "fieldName" : "group", "operator" : "in", "value" : ["Admin", "Developer"] } ] } ] }
Logica OR
È possibile combinare più filtri utilizzando la logica OR definendo più oggetti di filtro all'interno dell'filterGrouparray. Nell'esempio seguente, i filtri valutano true se la notifica di sottoscrizione ha un userId campo con un valore equivalente a 1 OR un valore di group campo uguale a Admin oDeveloper.
{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 } ] }, { "filters" : [ { "fieldName" : "group", "operator" : "in", "value" : ["Admin", "Developer"] } ] } ] }
Eccezioni
Tieni presente che esistono diverse restrizioni per l'utilizzo dei filtri:
-
Nell'
filtersoggetto, possono esserci un massimo di cinquefieldNameelementi unici per filtro. Ciò significa che è possibile combinare un massimo di cinquefieldNameoggetti singoli utilizzando la logica AND. -
L'
containsAnyoperatore può disporre di un massimo di venti valori. -
Possono esserci un massimo di cinque valori per gli
notInoperatoriinand. -
Ogni stringa può contenere un massimo di 256 caratteri.
-
Ogni confronto tra stringhe distingue tra maiuscole e minuscole.
-
Il filtraggio degli oggetti annidati consente fino a cinque livelli di filtraggio annidati.
-
Ciascuno
filterGrouppuò avere un massimo di 10.filtersCiò significa che è possibile combinarne un massimo di 10filtersutilizzando la logica OR.-
L'
inoperatore è un caso speciale della logica OR. Nell'esempio seguente, ce ne sono duefilters:{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 }, { "fieldName" : "group", "operator" : "in", "value" : ["Admin", "Developer"] } ] } ] }Il gruppo di filtri precedente viene valutato come segue e conta ai fini del limite massimo di filtri:
{ "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" } ] } ] }
-
Argomento: invalidationJsonObject
invalidationJsonObjectDefinisce quanto segue:
-
subscriptionField— L'abbonamento allo schema GraphQL da invalidare. Un singolo abbonamento, definito come una stringa insubscriptionField, viene considerato invalidato. -
payload— Un elenco di coppie chiave-valore che viene utilizzato come input per invalidare le sottoscrizioni se il filtro di invalidazione valuta in base ai relativi valori.trueL'esempio seguente invalida i client sottoscritti e connessi che utilizzano l'abbonamento quando il filtro di invalidazione definito nel resolver di
onUserDeletesottoscrizione restituisce un risultato conforme al valore.truepayload$extensions.invalidateSubscriptions({ "subscriptionField": "onUserDelete", "payload": { "group": "Developer" "type" : "Full-Time" } })