Pembantu transformasi di util.transform - AWS AppSync

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. Kami merekomendasikan penggunaan toDynamoDBFilterExpression dengan fungsi modul bawaan.

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

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

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 diasumsikanAND.

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

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

catatan

Parameter dan pernyataan pengembalian tercantum di bawah ini:

Parameter

  • objFilter: SubscriptionFilterObject

    Objek Map masukan yang dikonversi ke objek SubscriptionFilter ekspresi.

  • ignoredFields: SubscriptionFilterExcludeKeysType (opsional)

    Sebuah List nama bidang di objek pertama yang akan diabaikan.

  • rules: SubscriptionFilterRuleObject (opsional)

    Objek Map masukan dengan aturan ketat yang disertakan saat Anda membangun objek SubscriptionFilter ekspresi. Aturan ketat ini akan dimasukkan dalam objek SubscriptionFilter ekspresi sehingga setidaknya salah satu aturan akan dipenuhi untuk melewati filter berlangganan.

Respons

Mengembalikan SubscriptionFilter.

util.transform.toSubscriptionFilter(Map, List)

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)

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

Menciptakan ekspresi kondisi DynamoDB.

Argumen filter langganan

Tabel berikut menjelaskan bagaimana argumen dari 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 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 AND atau logika 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 menggunakanutil.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 menggunakanutil.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 menggunakanutil.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" } ] } ] }