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

Mendapatkan Pengecualian Pengesahan Dynamodb di Golang

王林
王林ke hadapan
2024-02-14 21:30:101309semak imbas

在 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"`
}

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

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"),
  },
},

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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam