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

util.transformenthält Hilfsmethoden, die es einfacher machen, komplexe Operationen an Datenquellen durchzuführen.

util.transform.toDynamoDBFilterExpression(filterObject: DynamoDBFilterObject) : string

Konvertiert eine Eingabezeichenfolge in einen Filterausdruck zur Verwendung mit DynamoDB. Wir empfehlen die Verwendung toDynamoDBFilterExpression mit integrierten Modulfunktionen.

util.transform.toElasticsearchQueryDSL(object: OpenSearchQueryObject) : string

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

Beispieleingabe:

util.transform.toElasticsearchQueryDSL({ "upvotes":{ "ne":15, "range":[ 10, 20 ] }, "title":{ "eq":"hihihi", "wildcard":"h*i" } })

Beispiel für eine Ausgabe:

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

Es wird davon ausgegangen, dass der Standardoperator istAND.

util.transform.toSubscriptionFilter(objFilter, ignoredFields?, rules?): SubscriptionFilter

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.

Anmerkung

Die Parameter und die Rückgabeanweisung sind unten aufgeführt:

Parameter

  • objFilter: SubscriptionFilterObject

    Ein Map Eingabeobjekt, das in das SubscriptionFilter Ausdrucksobjekt konvertiert wurde.

  • ignoredFields: SubscriptionFilterExcludeKeysType (optional)

    Eine List der Feldnamen im ersten Objekt, die ignoriert werden.

  • rules: SubscriptionFilterRuleObject (optional)

    Ein Map Eingabeobjekt mit strengen Regeln, das bei der Konstruktion des SubscriptionFilter Ausdrucksobjekts berücksichtigt wird. Diese strengen Regeln werden in das SubscriptionFilter Ausdrucksobjekt aufgenommen, sodass mindestens eine der Regeln erfüllt ist, um den Abonnementfilter zu bestehen.

Antwort

Gibt eine SubscriptionFilter zurück.

util.transform.toSubscriptionFilter(Map, List)

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)

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.toDynamoDBConditionExpression(conditionObject)

Erstellt einen DynamoDB-Bedingungsausdruck.

Argumente für den Abonnementfilter

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

  • Util.transform.toSubscriptionFilter(objFilter, ignoredFields?, rules?): SubscriptionFilter

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