$util.transform の変換ヘルパー - AWS AppSync

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

$util.transform の変換ヘルパー

$util.transformには、データソースに対する複雑なオペレーションの実行を容易にするヘルパーメソッドが含まれています。Amazon DynamoDBフィルタオペレーション

$util.transform.toDynamoDBFilterExpression(Map) : Map

入力文字列をフィルタ式に変換し、で使用できるようにします。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

指定された入力を同等の入力に変換します。 OpenSearch DSL 式をクエリ。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" } } ] } } ] } }

デフォルトのオ演算子は AND であると仮定されます。

$util.transform.toSubscriptionFilter(Map) : Map

を変換します。MapオブジェクトをSubscriptionFilterexpression オブジェクト。-$util.transform.toSubscriptionFilterメソッドはへの入力として使用されます。$extensions.setSubscriptionFilter()拡張機能。詳細については、「見る 拡張機能

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

を変換します。MapオブジェクトをSubscriptionFilterexpression オブジェクト。-$util.transform.toSubscriptionFilterメソッドはへの入力として使用されます。$extensions.setSubscriptionFilter()拡張機能。詳細については、次を参照してください。拡張機能

最初の引数はです。Map変換される入力オブジェクトSubscriptionFilter式オブジェクト。T二番目の議論は、List次のフィールド名です。です最初のものでは無視されますMap作成中の入力オブジェクトSubscriptionFilterexpression オブジェクト。

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

を変換します。 MapオブジェクトをSubscriptionFilterexpression オブジェクト。-$util.transform.toSubscriptionFilterメソッドはへの入力として使用されます。$extensions.setSubscriptionFilter()拡張機能。詳細については、次を参照してください。拡張機能

最初の引数はです。Map変換される入力オブジェクトSubscriptionFilter式オブジェクト。2番目の引数はList最初のフィールドでは無視されるフィールド名Map入力オブジェクトであり、3 番目の引数はMap構築中に含まれる厳密なルールの入力オブジェクトSubscriptionFilterexpression オブジェクト。これらの厳格なルールは、SubscriptionFilterサブスクリプションフィルタを渡すためにルールの少なくとも 1 つが満たされるような表現オブジェクト。

-以下テーブル では、次のユーティリティの引数の定義方法について説明します。

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

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

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

Argument 1: Map

引数 1はMap次のキー値を持つオブジェクト。

  • フィールド名

  • 「と」

  • 「または」

キーとしてのフィールド名の場合、これらのフィールドのエントリの条件は次の形式になります。"operator" : "value"

次の例は、エントリをに追加する方法を示しています。Map:

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

フィールドに 2 つ以上の条件がある場合、これらの条件はすべて次の条件とみなされます。つかいますOR 演算を実行します。

入力Mapまた、キーとして「and」と「or」を持つこともできます。これは、キーに応じて AND または OR ロジックを使用してこれら内のすべてのエントリを結合する必要があることを意味します。キー値「and」と「or」は、条件の配列を期待します。

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

注意:次の操作を実行できます。ネスト 「と」と「または」。つまり、あなた別の「and」/"or」ブロック内にネストされた「and」/"or」を持つことができます。ただし、うまくいかない単純なフィールドの場合。

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

次の例は、の入力を示します。引数 1を使用します$util.transform.toSubscriptionFilter(Map) : Map

入力

引数 1: マップ:

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

出力

結果は次のとおりです。Mapオブジェクト:

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

引数 2にはが含まれています。List入力で考慮すべきではないフィールド名Map(引数 1) を構築しながらSubscriptionFilterexpression オブジェクト。-List空になることもあります。

次の例は、の入力を示します。引数 1そして引数 2を使用します$util.transform.toSubscriptionFilter(Map, List) : Map

入力

引数 1: マップ:

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

引数 2: : リスト

["percentageUp", "author"]

出力

結果は次のとおりです。Mapオブジェクト:

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

引数 3はMap対象それをキー値としてフィールド名があります (「and」または「or」は使用できません)。キーとしてのフィールド名の場合、これらのフィールドの条件は、次の形式のエントリです。"operator" : "value"。と違って引数 1,引数 3同じキーに複数の条件を含めることはできません。また、引数 3は「and」または「or」節を持たないため、ネストも関係しません。

引数 3は、厳密な規則のリストを表し、SubscriptionFilter式オブジェクトそうそれを少なくとも 1 つのこれらの条件のうちですフィルターを渡すために会った。

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

次の例は、の入力を示します。引数 1,引数 2, および引数 3を使用します$util.transform.toSubscriptionFilter(Map, List, Map) : Map

入力

引数 1: マップ:

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

引数 2: : リスト

["percentageUp", "author"]

引数 3: マップ:

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

出力

結果は次のとおりです。Mapオブジェクト:

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