Heim > Artikel > Backend-Entwicklung > Abrufen der ValidationException von Dynamodb in Golang
In Golang kann es bei der Interaktion mit Dynamodb manchmal zu einem ValidationException-Fehler kommen. Dieser Fehler bedeutet normalerweise, dass die angeforderten Daten nicht den Einschränkungen der Dynamodb-Tabelle entsprechen. In diesem Artikel stellen wir vor, wie Sie mithilfe des PHP-Editors Zimo den ValidationException-Fehler von Dynamodb in Golang erhalten, und stellen Lösungen zur reibungslosen Behandlung solcher Fehler bereit. Egal, ob Sie Anfänger oder erfahrener Entwickler sind, dieser Artikel wird Ihnen helfen. Lassen Sie uns herausfinden, wie wir mit diesem häufigen Fehler umgehen können!
Ich habe ein Muster wie dieses gemacht~
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"` }
Der Schlüssel und das Onboarding hier sind mein Primärschlüssel bzw. mein Sortierschlüssel. Dann habe ich die Daten so hinzugefügt ~
movie := movie{ key: "2323", onboarding: "the big new movie", }
Dann habe ich eine normale Marshallmap von etwas erstellt und die Daten verwendet, um die Elemente zu erhalten.
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 }
Das Seltsame ist, dass ich den gleichen Code verwendet habe, um die Daten fast ohne Änderungen einzufügen, aber beim Abrufen der Daten wird der Fehler angezeigt ~validationException: Das angegebene Schlüsselelement stimmt nicht mit dem Schema überein
Dieser Fehler kann darauf zurückzuführen sein to Wird durch das Senden von Nicht-Schlüsselattributen im getitem-Aufruf verursacht. Wenn Sie Marshalmap verwenden, enthält es einen Nullwert für alle anderen Eigenschaften im Schlüsselobjekt.
Sie können den Schlüssel manuell erstellen:
key: map[string]*dynamodb.attributevalue{ "userid": { s: aws.string("2323"), }, "username": { s: aws.string("the big new movie"), }, },
Oder fügen Sie omitempty zu den Strukturfeldern hinzu, wodurch diese Eigenschaften von der Marshalling-Map ausgeschlossen werden, wenn sie keinen Wert haben:
type Movie struct { Year int `json:"year,omitempty"` Title string `json:"title,omitempty"` [...] }
Das obige ist der detaillierte Inhalt vonAbrufen der ValidationException von Dynamodb in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!