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 !
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
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!