View a markdown version of this page

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

util.transformberisi metode pembantu yang membuatnya lebih mudah untuk melakukan operasi kompleks terhadap sumber data.

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

Mengkonversi string input ke ekspresi filter untuk digunakan dengan DynamoDB. Sebaiknya gunakan toDynamoDBFilterExpression dengan fungsi modul bawaan.

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

Mengkonversi input yang diberikan menjadi ekspresi DSL OpenSearch Query yang setara, mengembalikannya sebagai string JSON.

Contoh masukan:

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

Contoh keluaran:

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

Operator default diasumsikan AND.

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

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

catatan

Parameter dan pernyataan pengembalian tercantum di bawah ini:

Parameter

  • objFilter: SubscriptionFilterObject

    Ob Map jek input yang dikonversi ke objek SubscriptionFilter ekspresi.

  • ignoredFields: SubscriptionFilterExcludeKeysType (opsional)

    Sebuah List nama bidang di objek pertama yang akan diabaikan.

  • rules: SubscriptionFilterRuleObject (opsional)

    Ob Map jek input dengan aturan ketat yang disertakan saat Anda membangun objek SubscriptionFilter ekspresi. Aturan ketat ini akan dimasukkan dalam objek SubscriptionFilter ekspresi sehingga setidaknya satu aturan akan dipenuhi untuk melewati filter langganan.

Respons

Mengembalikan SubscriptionFilter.

util.transform.toSubscriptionFilter(Map, List)

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

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

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

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

util.transform.toDynamoDBConditionExpression(conditionObject)

Membuat ekspresi kondisi DynamoDB.

Argumen filter langganan

Tabel berikut menjelaskan bagaimana argumen utilitas berikut didefinisikan:

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

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 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 serangkaian kondisi.

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

Perhatikan bahwa Anda dapat bersarang “dan” dan “atau”. Artinya, Anda dapat bersarang “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 input argumen 1 menggunakanutil.transform.toSubscriptionFilter(Map) : Map.

Masukan (s)

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 input argumen 1 dan argumen 2 menggunakanutil.transform.toSubscriptionFilter(Map, List) : Map.

Masukan (s)

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 mewakili 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 input argumen 1, argumen 2, dan argumen 3 menggunakanutil.transform.toSubscriptionFilter(Map, List, Map) : Map.

Masukan (s)

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