Di Golang, apabila berinteraksi dengan Dynamodb, anda mungkin kadangkala menghadapi ralat Pengesahan Pengesahan. Ralat ini biasanya bermakna data yang diminta tidak mematuhi kekangan jadual Dynamodb. Dalam artikel ini, kami akan memperkenalkan cara untuk mendapatkan ralat ValidationException Dynamodb di Golang melalui bimbingan editor PHP Zimo, dan menyediakan penyelesaian untuk mengendalikan ralat tersebut dengan lancar. Sama ada anda seorang pemula atau pembangun berpengalaman, artikel ini akan membantu anda. Mari kita terokai cara menangani kesilapan biasa ini!
Saya buat corak macam ni~
type movie struct { year int `json:"year"` title string `json:"title"` key string `json:"userid"` email string `json:"email"` bio string `json:"bio"` number int `json:"phonenumber"` socialhandle string `json:"socialhandle"` onboarding string `json:"username"` bankdetails string `json:"bankdetails"` image string `json:"image"` password string `json:"password"` resume string `json:"resume"` pincode string `json:"pincode"` }
Kunci dan onboarding di sini ialah kunci utama dan kunci pengisihan saya masing-masing. Kemudian saya menambah data seperti ini~
movie := movie{ key: "2323", onboarding: "the big new movie", }
Kemudian marshalmap biasa sesuatu yang saya buat dan menggunakan data untuk mendapatkan item tersebut.
key, err := dynamodbattribute.MarshalMap(movie) if err != nil { fmt.Println(err.Error()) return } input := &dynamodb.GetItemInput{ Key: key, TableName: aws.String("tablename"), } result, err := svc.GetItem(input) if err != nil { fmt.Println(err) fmt.Println(err.Error()) return }
Perkara yang pelik ialah saya menggunakan kod yang sama untuk memasukkan data dengan hampir tiada perubahan tetapi semasa mendapatkan data ia menunjukkan ralat ~validationexception: Elemen kunci yang dibekalkan tidak sepadan dengan skema
Ralat ini mungkin disebabkan kepada Disebabkan oleh menghantar atribut bukan kunci dalam panggilan getitem. Apabila anda menggunakan marshalmap, ia mengandungi nilai nol untuk semua sifat lain dalam objek utama.
Anda boleh membina kunci secara manual:
key: map[string]*dynamodb.attributevalue{ "userid": { s: aws.string("2323"), }, "username": { s: aws.string("the big new movie"), }, },
Atau tambahkan omitempty pada medan struct, yang akan mengecualikan sifat ini daripada peta marshalling jika ia tidak mempunyai nilai:
type Movie struct { Year int `json:"year,omitempty"` Title string `json:"title,omitempty"` [...] }
Atas ialah kandungan terperinci Mendapatkan Pengecualian Pengesahan Dynamodb di Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!