Rumah > pembangunan bahagian belakang > Golang > Mendapatkan Pengecualian Pengesahan Dynamodb di Golang

Mendapatkan Pengecualian Pengesahan Dynamodb di Golang

王林
Lepaskan: 2024-02-14 21:30:10
ke hadapan
1308 orang telah melayarinya

在 Golang 中获取 Dynamodb 的 ValidationException

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!

Isi soalan

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"`
}
Salin selepas log masuk

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",
}
Salin selepas log masuk

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
}
Salin selepas log masuk

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

Penyelesaian

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"),
  },
},
Salin selepas log masuk

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"`
        [...]
}
Salin selepas log masuk

Atas ialah kandungan terperinci Mendapatkan Pengecualian Pengesahan Dynamodb di Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan