Pembantu transformasi di $util.transform - AWS AppSync GraphQL

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Pembantu transformasi di $util.transform

catatan

Kami sekarang terutama mendukung runtime APPSYNC_JS dan dokumentasinya. Harap pertimbangkan untuk menggunakan runtime APPSYNC_JS dan panduannya di sini.

$util.transformberisi metode pembantu yang memudahkan untuk melakukan operasi kompleks terhadap sumber data, seperti operasi filter Amazon DynamoDB.

Pembantu transformasi

$util.transform.toDynamoDBFilterExpression(Map) : Map

Mengkonversi string input ke ekspresi filter untuk digunakan dengan 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

Mengkonversi input yang diberikan ke ekspresi OpenSearch Query DSL yang setara, mengembalikannya sebagai string 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" } } ] } } ] } }

Operator default diasumsikan AND.

Filter berlangganan pembantu transformasi

$util.transform.toSubscriptionFilter(Map) : Map

Mengkonversi objek Map input ke objek SubscriptionFilter ekspresi. $util.transform.toSubscriptionFilterMetode ini digunakan sebagai masukan ke $extensions.setSubscriptionFilter() ekstensi. Untuk informasi selengkapnya, lihat Ekstensi.

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

Mengkonversi objek Map input ke objek SubscriptionFilter ekspresi. $util.transform.toSubscriptionFilterMetode ini digunakan sebagai masukan ke $extensions.setSubscriptionFilter() ekstensi. Untuk informasi selengkapnya, lihat Ekstensi.

Argumen pertama adalah objek Map masukan yang dikonversi ke objek SubscriptionFilter ekspresi. Argumen kedua adalah nama List bidang yang diabaikan dalam objek Map masukan pertama saat membangun objek SubscriptionFilter ekspresi.

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

Mengkonversi objek Map input ke objek SubscriptionFilter ekspresi. $util.transform.toSubscriptionFilterMetode ini digunakan sebagai masukan ke $extensions.setSubscriptionFilter() ekstensi. Untuk informasi selengkapnya, lihat Ekstensi.

Argumen pertama adalah objek Map masukan yang dikonversi ke objek SubscriptionFilter ekspresi, argumen kedua adalah nama List bidang yang akan diabaikan dalam objek Map masukan pertama, dan argumen ketiga adalah objek Map masukan dari aturan ketat yang disertakan saat membangun objek SubscriptionFilter ekspresi. Aturan ketat ini disertakan dalam objek SubscriptionFilter ekspresi sedemikian rupa sehingga setidaknya salah satu aturan akan dipenuhi untuk melewati filter berlangganan.

Argumen filter langganan

Tabel berikut menjelaskan bagaimana argumen dari utilitas berikut didefinisikan:

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

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

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

Argument 1: Map

Argumen 1 adalah Map objek dengan nilai-nilai kunci berikut:

  • nama bidang

  • “dan”

  • “atau”

Untuk nama bidang sebagai kunci, kondisi pada entri bidang ini adalah dalam bentuk. "operator" : "value"

Contoh berikut menunjukkan bagaimana entri dapat ditambahkan keMap:

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

Ketika sebuah bidang memiliki dua atau lebih kondisi di atasnya, semua kondisi ini dianggap menggunakan operasi OR.

Input juga Map dapat memiliki “dan” dan “atau” sebagai kunci, menyiratkan bahwa semua entri di dalamnya harus digabungkan menggunakan logika AND atau OR tergantung pada kuncinya. Nilai kunci “dan” dan “atau” mengharapkan berbagai kondisi.

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

Perhatikan bahwa Anda dapat bersarang “dan” dan “atau”. Artinya, Anda dapat memiliki sarang “dan” /"atau” di dalam blok “dan” /"atau” lainnya. Namun, ini tidak berfungsi untuk bidang sederhana.

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

Contoh berikut menunjukkan masukan argumen 1 menggunakan$util.transform.toSubscriptionFilter(Map) : Map.

Masukan

Argumen 1: Peta:

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

Keluaran

Hasilnya adalah Map objek:

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

Argumen 2 berisi nama List bidang yang tidak boleh dipertimbangkan dalam input Map (argumen 1) saat membangun objek SubscriptionFilter ekspresi. ListBisa juga kosong.

Contoh berikut menunjukkan masukan argumen 1 dan argumen 2 menggunakan$util.transform.toSubscriptionFilter(Map, List) : Map.

Masukan

Argumen 1: Peta:

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

Argumen 2: Daftar:

["percentageUp", "author"]

Keluaran

Hasilnya adalah Map objek:

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

Argumen 3 adalah Map objek yang memiliki nama bidang sebagai nilai kunci (tidak dapat memiliki “dan” atau “atau”). Untuk nama bidang sebagai kunci, kondisi pada bidang ini adalah entri dalam bentuk. "operator" : "value" Tidak seperti argumen 1, argumen 3 tidak dapat memiliki beberapa kondisi dalam kunci yang sama. Selain itu, argumen 3 tidak memiliki klausa “dan” atau “atau”, jadi tidak ada sarang yang terlibat juga.

Argumen 3 merupakan daftar aturan ketat, yang ditambahkan ke objek SubscriptionFilter ekspresi sehingga setidaknya satu dari kondisi ini terpenuhi untuk melewati filter.

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

Contoh berikut menunjukkan masukan dari argumen 1, argumen 2, dan argumen 3 menggunakan$util.transform.toSubscriptionFilter(Map, List, Map) : Map.

Masukan

Argumen 1: Peta:

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

Argumen 2: Daftar:

["percentageUp", "author"]

Argumen 3: Peta:

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

Keluaran

Hasilnya adalah Map objek:

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