Aiutanti di trasformazione in $util.transform - AWS AppSync

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à.

Aiutanti di trasformazione in $util.transform

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.

$util.transformcontiene metodi di supporto che semplificano l'esecuzione di operazioni complesse su fonti di dati, come le operazioni di filtro di Amazon DynamoDB.

aiutanti per la trasformazione

$util.transform.toDynamoDBFilterExpression(Map) : Map

Converte una stringa di input in un'espressione di filtro da utilizzare con DynamoDB.

Input: $util.transform.toDynamoDBFilterExpression({ "title":{ "contains":"Hello World" } }) Output: { "expression" : "contains(#title, :title_contains)" "expressionNames" : { "#title" : "title", }, "expressionValues" : { ":title_contains" : { "S" : "Hello World" } }, }
$util.transform.toElasticsearchQueryDSL(Map) : Map

Converte l'input specificato nella sua espressione OpenSearch Query DSL equivalente, restituendola come stringa JSON.

Input: $util.transform.toElasticsearchQueryDSL({ "upvotes":{ "ne":15, "range":[ 10, 20 ] }, "title":{ "eq":"hihihi", "wildcard":"h*i" } }) Output: { "bool":{ "must":[ { "bool":{ "must":[ { "bool":{ "must_not":{ "term":{ "upvotes":15 } } } }, { "range":{ "upvotes":{ "gte":10, "lte":20 } } } ] } }, { "bool":{ "must":[ { "term":{ "title":"hihihi" } }, { "wildcard":{ "title":"h*i" } } ] } } ] } }

Si presume che l'operatore predefinito sia AND.

Transformation Helpers, filtri di sottoscrizione

$util.transform.toSubscriptionFilter(Map) : Map

Converte un oggetto Map di input in un SubscriptionFilter oggetto espressione. Il $util.transform.toSubscriptionFilter metodo viene utilizzato come input per l'$extensions.setSubscriptionFilter()estensione. Per ulteriori informazioni, consulta Estensioni.

$util.transform.toSubscriptionFilter(Map, List) : Map

Converte un oggetto Map di input in un oggetto SubscriptionFilter espressione. Il $util.transform.toSubscriptionFilter metodo viene utilizzato come input per l'$extensions.setSubscriptionFilter()estensione. Per ulteriori informazioni, consulta Estensioni.

Il primo argomento è l'oggetto Map di input che viene convertito nell'oggetto SubscriptionFilter espressione. Il secondo argomento riguarda i nomi List di campo che vengono ignorati nel primo oggetto Map di input durante la costruzione dell'oggetto SubscriptionFilter espressione.

$util.transform.toSubscriptionFilter(Map, List, Map) : Map

Converte un oggetto Map di input in un SubscriptionFilter oggetto espressione. Il $util.transform.toSubscriptionFilter metodo viene utilizzato come input per l'$extensions.setSubscriptionFilter()estensione. Per ulteriori informazioni, consulta Estensioni.

Il primo argomento è l'oggetto di Map input che viene convertito nell'oggetto SubscriptionFilter espressione, il secondo argomento riguarda i nomi List di campo che verranno ignorati nel primo oggetto di Map input e il terzo argomento è un oggetto di Map input con regole rigorose che viene incluso durante la costruzione dell'oggetto SubscriptionFilter espressione. Queste regole rigorose sono incluse nell'oggetto SubscriptionFilter espressione in modo tale che almeno una delle regole venga soddisfatta per passare il filtro di sottoscrizione.

Argomenti del filtro di iscrizione

La tabella seguente spiega come vengono definiti gli argomenti delle seguenti utilità:

  • $util.transform.toSubscriptionFilter(Map) : Map

  • $util.transform.toSubscriptionFilter(Map, List) : Map

  • $util.transform.toSubscriptionFilter(Map, List, Map) : Map

Argument 1: Map

L'argomento 1 è un Map oggetto con i seguenti valori chiave:

  • nomi di campo

  • «e»

  • «o»

Per i nomi di campo utilizzati come chiavi, le condizioni relative alle voci di questi campi sono nel formato di. "operator" : "value"

L'esempio seguente mostra come aggiungere voci a: Map

"field_name" : { "operator1" : value } ## We can have multiple conditions for the same field_name: "field_name" : { "operator1" : value "operator2" : value . . . }

Quando un campo contiene due o più condizioni, si considera che tutte queste condizioni utilizzino l'operazione OR.

L'input Map può anche avere «e» e «or» come chiavi, il che implica che tutte le voci al suo interno devono essere unite utilizzando la logica AND o OR a seconda della chiave. I valori chiave «and» e «or» prevedono una serie di condizioni.

"and" : [ { "field_name1" : { "operator1" : value } }, { "field_name2" : { "operator1" : value } }, . . ].

Nota che puoi annidare «and» e «or». Cioè, puoi aver annidato «e» /"or» all'interno di un altro blocco «e» /"or». Tuttavia, questo non funziona per campi semplici.

"and" : [ { "field_name1" : { "operator" : value } }, { "or" : [ { "field_name2" : { "operator" : value } }, { "field_name3" : { "operator" : value } } ].

L'esempio seguente mostra un input dell'argomento 1 utilizzando$util.transform.toSubscriptionFilter(Map) : Map.

Ingresso/i

Argomento 1: Mappa:

{ "percentageUp": { "lte": 50, "gte": 20 }, "and": [ { "title": { "ne": "Book1" } }, { "downvotes": { "gt": 2000 } } ], "or": [ { "author": { "eq": "Admin" } }, { "isPublished": { "eq": false } } ] }

Output

Il risultato è un Map oggetto:

{ "filterGroup": [ { "filters": [ { "fieldName": "percentageUp", "operator": "lte", "value": 50 }, { "fieldName": "title", "operator": "ne", "value": "Book1" }, { "fieldName": "downvotes", "operator": "gt", "value": 2000 }, { "fieldName": "author", "operator": "eq", "value": "Admin" } ] }, { "filters": [ { "fieldName": "percentageUp", "operator": "lte", "value": 50 }, { "fieldName": "title", "operator": "ne", "value": "Book1" }, { "fieldName": "downvotes", "operator": "gt", "value": 2000 }, { "fieldName": "isPublished", "operator": "eq", "value": false } ] }, { "filters": [ { "fieldName": "percentageUp", "operator": "gte", "value": 20 }, { "fieldName": "title", "operator": "ne", "value": "Book1" }, { "fieldName": "downvotes", "operator": "gt", "value": 2000 }, { "fieldName": "author", "operator": "eq", "value": "Admin" } ] }, { "filters": [ { "fieldName": "percentageUp", "operator": "gte", "value": 20 }, { "fieldName": "title", "operator": "ne", "value": "Book1" }, { "fieldName": "downvotes", "operator": "gt", "value": 2000 }, { "fieldName": "isPublished", "operator": "eq", "value": false } ] } ] }
Argument 2: List

L'argomento 2 contiene una List serie di nomi di campo che non devono essere considerati nell'input Map (argomento 1) durante la costruzione dell'oggetto SubscriptionFilter espressione. ListPossono anche essere vuoti.

L'esempio seguente mostra gli input dell'argomento 1 e dell'argomento 2 utilizzando$util.transform.toSubscriptionFilter(Map, List) : Map.

Ingresso/i

Argomento 1: Mappa:

{ "percentageUp": { "lte": 50, "gte": 20 }, "and": [ { "title": { "ne": "Book1" } }, { "downvotes": { "gt": 20 } } ], "or": [ { "author": { "eq": "Admin" } }, { "isPublished": { "eq": false } } ] }

Argomento 2: Elenco:

["percentageUp", "author"]

Output

Il risultato è un Map oggetto:

{ "filterGroup": [ { "filters": [ { "fieldName": "title", "operator": "ne", "value": "Book1" }, { "fieldName": "downvotes", "operator": "gt", "value": 20 }, { "fieldName": "isPublished", "operator": "eq", "value": false } ] } ] }
Argument 3: Map

L'argomento 3 è un Map oggetto che ha nomi di campo come valori chiave (non può avere «and» o «or»). Per i nomi di campo come chiavi, le condizioni in questi campi sono voci nel formato di"operator" : "value". A differenza dell'argomento 1, l'argomento 3 non può avere più condizioni nella stessa chiave. Inoltre, l'argomento 3 non contiene una clausola «and» o «or», quindi non è prevista nemmeno la nidificazione.

L'argomento 3 rappresenta un elenco di regole rigorose, che vengono aggiunte all'oggetto SubscriptionFilter espressione in modo che venga soddisfatta almeno una di queste condizioni per passare il filtro.

{ "fieldname1": { "operator": value }, "fieldname2": { "operator": value } } . . .

L'esempio seguente mostra gli input dell'argomento 1, dell'argomento 2 e dell'argomento 3 utilizzando$util.transform.toSubscriptionFilter(Map, List, Map) : Map.

Ingresso/i

Argomento 1: Mappa:

{ "percentageUp": { "lte": 50, "gte": 20 }, "and": [ { "title": { "ne": "Book1" } }, { "downvotes": { "lt": 20 } } ], "or": [ { "author": { "eq": "Admin" } }, { "isPublished": { "eq": false } } ] }

Argomento 2: Elenco:

["percentageUp", "author"]

Argomento 3: Mappa:

{ "upvotes": { "gte": 250 }, "author": { "eq": "Person1" } }

Output

Il risultato è un Map oggetto:

{ "filterGroup": [ { "filters": [ { "fieldName": "title", "operator": "ne", "value": "Book1" }, { "fieldName": "downvotes", "operator": "gt", "value": 20 }, { "fieldName": "isPublished", "operator": "eq", "value": false }, { "fieldName": "upvotes", "operator": "gte", "value": 250 } ] }, { "filters": [ { "fieldName": "title", "operator": "ne", "value": "Book1" }, { "fieldName": "downvotes", "operator": "gt", "value": 20 }, { "fieldName": "isPublished", "operator": "eq", "value": false }, { "fieldName": "author", "operator": "eq", "value": "Person1" } ] } ] }