Transformationshelfer in $util.transform - AWS AppSync

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Transformationshelfer in $util.transform

Anmerkung

Wir unterstützen jetzt hauptsächlich die APPSYNC _JS-Laufzeit und ihre Dokumentation. Bitte erwägen Sie, die APPSYNC _JS-Laufzeit und ihre Anleitungen hier zu verwenden.

$util.transformenthält Hilfsmethoden, die es einfacher machen, komplexe Operationen mit Datenquellen durchzuführen, wie z. B. Amazon DynamoDB DynamoDB-Filteroperationen.

Helfer bei der Transformation

$util.transform.toDynamoDBFilterExpression(Map) : Map

Konvertiert eine Eingabezeichenfolge in einen Filterausdruck zur Verwendung mit 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

Konvertiert die angegebene Eingabe in den entsprechenden OpenSearch DSL Abfrageausdruck und gibt sie als JSON Zeichenfolge zurück.

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

Es wird davon ausgegangen, dass der Standardoperator istAND.

Transformation Helpers, Abonnementfilter

$util.transform.toSubscriptionFilter(Map) : Map

Konvertiert ein Map Eingabeobjekt in ein SubscriptionFilter Ausdrucksobjekt. Die $util.transform.toSubscriptionFilter Methode wird als Eingabe für die $extensions.setSubscriptionFilter() Erweiterung verwendet. Weitere Informationen finden Sie unter Erweiterungen.

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

Konvertiert ein Map Eingabeobjekt in ein SubscriptionFilter Ausdrucksobjekt. Die $util.transform.toSubscriptionFilter Methode wird als Eingabe für die $extensions.setSubscriptionFilter() Erweiterung verwendet. Weitere Informationen finden Sie unter Erweiterungen.

Das erste Argument ist das Map Eingabeobjekt, das in das SubscriptionFilter Ausdrucksobjekt konvertiert wurde. Das zweite Argument besteht List aus Feldnamen, die im ersten Map Eingabeobjekt bei der Konstruktion des SubscriptionFilter Ausdrucksobjekts ignoriert werden.

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

Konvertiert ein Map Eingabeobjekt in ein SubscriptionFilter Ausdrucksobjekt. Die $util.transform.toSubscriptionFilter Methode wird als Eingabe für die $extensions.setSubscriptionFilter() Erweiterung verwendet. Weitere Informationen finden Sie unter Erweiterungen.

Das erste Argument ist das Map Eingabeobjekt, das in das SubscriptionFilter Ausdrucksobjekt konvertiert wurde, das zweite Argument enthält Feldnamen, die im ersten Map Eingabeobjekt ignoriert werden, und das dritte Argument ist ein Map Eingabeobjekt mit strengen Regeln, das bei der Konstruktion des SubscriptionFilter Ausdrucksobjekts berücksichtigt wird. List Diese strengen Regeln sind so im SubscriptionFilter Ausdrucksobjekt enthalten, dass mindestens eine der Regeln erfüllt ist, um den Abonnementfilter zu bestehen.

Argumente für den Abonnementfilter

In der folgenden Tabelle wird erklärt, wie die Argumente der folgenden Dienstprogramme definiert sind:

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

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

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

Argument 1: Map

Argument 1 ist ein Map Objekt mit den folgenden Schlüsselwerten:

  • Feldnamen

  • „und“

  • „oder“

Bei Feldnamen als Schlüssel haben die Bedingungen für die Einträge dieser Felder die Form von"operator" : "value".

Das folgende Beispiel zeigt, wie Einträge hinzugefügt werden können: Map

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

Wenn ein Feld zwei oder mehr Bedingungen enthält, wird davon ausgegangen, dass alle diese Bedingungen die OR-Operation verwenden.

Die Eingabe Map kann auch „und“ und „oder“ als Schlüssel enthalten, was bedeutet, dass alle darin enthaltenen Einträge je nach Schlüssel mit der AND ODER-Logik verknüpft werden sollten. Die Schlüsselwerte „und“ und „oder“ erwarten eine Reihe von Bedingungen.

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

Beachten Sie, dass Sie „und“ und „oder“ verschachteln können. Das heißt, Sie können „und“ /"oder“ innerhalb eines anderen „und“ /"oder“ -Blocks verschachtelt haben. Dies funktioniert jedoch nicht für einfache Felder.

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

Das folgende Beispiel zeigt eine Eingabe von Argument 1 mit$util.transform.toSubscriptionFilter(Map) : Map.

Eingabe (en)

Argument 1: Karte:

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

Ausgabe

Das Ergebnis ist ein Map Objekt:

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

Argument 2 enthält eine Reihe List von Feldnamen, die bei der Erstellung des SubscriptionFilter Ausdrucksobjekts nicht in der Eingabe Map (Argument 1) berücksichtigt werden sollten. Das List kann auch leer sein.

Das folgende Beispiel zeigt die Eingaben von Argument 1 und Argument 2 mit$util.transform.toSubscriptionFilter(Map, List) : Map.

Eingabe (en)

Argument 1: Karte:

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

Argument 2: Liste:

["percentageUp", "author"]

Ausgabe

Das Ergebnis ist ein Map Objekt:

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

Argument 3 ist ein Map Objekt, das Feldnamen als Schlüsselwerte hat (darf nicht „und“ oder „oder“ enthalten). Bei Feldnamen als Schlüssel handelt es sich bei den Bedingungen für diese Felder um Einträge in der Form von"operator" : "value". Im Gegensatz zu Argument 1 kann Argument 3 nicht mehrere Bedingungen in demselben Schlüssel haben. Darüber hinaus hat Argument 3 keine „Und“ - oder „Oder“ -Klausel, sodass auch keine Verschachtelung erforderlich ist.

Argument 3 stellt eine Liste strenger Regeln dar, die dem SubscriptionFilter Ausdrucksobjekt hinzugefügt werden, sodass mindestens eine dieser Bedingungen erfüllt ist, um den Filter zu bestehen.

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

Das folgende Beispiel zeigt die Eingaben von Argument 1, Argument 2 und Argument 3 mit$util.transform.toSubscriptionFilter(Map, List, Map) : Map.

Eingabe (en)

Argument 1: Karte:

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

Argument 2: Liste:

["percentageUp", "author"]

Argument 3: Karte:

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

Ausgabe

Das Ergebnis ist ein Map Objekt:

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