Maison >développement back-end >Golang >Obtenir l'exception de validation de Dynamodb dans Golang

Obtenir l'exception de validation de Dynamodb dans Golang

王林
王林avant
2024-02-14 21:30:101311parcourir

在 Golang 中获取 Dynamodb 的 ValidationException

Dans Golang, lorsque vous interagissez avec Dynamodb, vous pouvez parfois rencontrer une erreur ValidationException. Cette erreur signifie généralement que les données demandées ne respectent pas les contraintes de la table Dynamodb. Dans cet article, nous présenterons comment obtenir l'erreur ValidationException de Dynamodb dans Golang grâce aux conseils de l'éditeur PHP Zimo, et fournirons des solutions pour gérer ces erreurs en douceur. Que vous soyez débutant ou développeur expérimenté, cet article vous aidera. Explorons comment gérer cette erreur courante !

Contenu de la question

J'ai fait un modèle comme celui-ci~

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

La clé et l'intégration ici sont respectivement ma clé primaire et ma clé de tri. Ensuite, j'ai ajouté les données comme ceci~

movie := movie{
    key:        "2323",
    onboarding: "the big new movie",
}

Ensuite, une marshalmap normale de quelque chose que j'ai créé et utilisé les données pour obtenir les éléments.

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
}

Ce qui est étrange, c'est que j'ai utilisé le même code pour insérer les données avec presque aucune modification, mais lors de l'obtention des données, l'erreur ~validationexception : l'élément clé fourni ne correspond pas au schéma

Solution de contournement

Cette erreur peut être due à Causé par l'envoi d'attributs non clés dans l'appel getitem. Lorsque vous utilisez marshalmap, il contient une valeur nulle pour toutes les autres propriétés de l'objet clé.

Vous pouvez construire la clé manuellement :

key: map[string]*dynamodb.attributevalue{
  "userid": {
    s: aws.string("2323"),
  },
  "username": {
    s: aws.string("the big new movie"),
  },
},

Ou ajoutez omitempty aux champs struct, ce qui exclura ces propriétés de la carte de marshalling si elles n'ont aucune valeur :

type Movie struct {
    Year         int    `json:"year,omitempty"`
    Title        string `json:"title,omitempty"`
        [...]
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer