Pemecahan masalah dan kesalahan umum di AWS AppSync - AWS AppSync GraphQL

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

Pemecahan masalah dan kesalahan umum di AWS AppSync

Bagian ini membahas beberapa kesalahan umum dan cara memecahkan masalah mereka.

Pemetaan kunci DynamoDB salah

Jika operasi GraphQL Anda mengembalikan pesan galat berikut, itu mungkin karena struktur template pemetaan permintaan Anda tidak cocok dengan struktur kunci Amazon DynamoDB:

The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code

Misalnya, jika tabel DynamoDB Anda memiliki kunci hash yang "id" dipanggil dan template Anda "PostID" mengatakan, seperti pada contoh berikut, ini menghasilkan kesalahan sebelumnya, karena tidak cocok. "id" "PostID"

{ "version" : "2017-02-28", "operation" : "GetItem", "key" : { "PostID" : $util.dynamodb.toDynamoDBJson($ctx.args.id) } }

Resolver yang hilang

Jika Anda menjalankan operasi GraphQL, seperti kueri, dan mendapatkan respons nol, ini mungkin karena Anda tidak memiliki resolver yang dikonfigurasi.

Misalnya, jika Anda mengimpor skema yang mendefinisikan getCustomer(userId: ID!): bidang, dan Anda belum mengonfigurasi resolver untuk bidang ini, maka ketika Anda menjalankan kueri sepertigetCustomer(userId:"ID123"){...}, Anda akan mendapatkan respons seperti berikut:

{ "data": { "getCustomer": null } }

Kesalahan template pemetaan

Jika template pemetaan Anda tidak dikonfigurasi dengan benar, Anda akan menerima respons GraphQL yang ada. errorType MappingTemplate messageBidang harus menunjukkan di mana masalahnya ada di template pemetaan Anda.

Misalnya, jika Anda tidak memiliki operation bidang dalam templat pemetaan permintaan, atau jika nama operation bidang salah, Anda akan mendapatkan respons seperti berikut:

{ "data": { "searchPosts": null }, "errors": [ { "path": [ "searchPosts" ], "errorType": "MappingTemplate", "locations": [ { "line": 2, "column": 3 } ], "message": "Value for field '$[operation]' not found." } ] }

Jenis pengembalian yang salah

Jenis pengembalian dari sumber data Anda harus cocok dengan tipe objek yang ditentukan dalam skema Anda, jika tidak, Anda mungkin melihat kesalahan GraphQL seperti:

"errors": [ { "path": [ "posts" ], "locations": null, "message": "Can't resolve value (/posts) : type mismatch error, expected type LIST, got OBJECT" } ]

Misalnya ini dapat terjadi dengan definisi kueri berikut:

type Query { posts: [Post] }

Yang mengharapkan LIST [Posts] objek. Misalnya jika Anda memiliki fungsi Lambda di Node.JS dengan sesuatu seperti berikut:

const result = { data: data.Items.map(item => { return item ; }) }; callback(err, result);

Ini akan menimbulkan kesalahan seperti result objek. Anda perlu mengubah panggilan balik ke result.data atau mengubah skema Anda untuk tidak mengembalikan a. LIST

Memproses permintaan yang tidak valid

Ketika AWS AppSync tidak dapat memproses dan mengirim permintaan (karena data yang tidak benar seperti sintaks tidak valid) ke penyelesai bidang, payload respons akan mengembalikan data bidang dengan nilai yang disetel ke dan kesalahan yang relevan. null