Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Problembehebung und häufige Fehler in AWS AppSync
In diesem Abschnitt wird auf einige häufige Fehler eingegangen und erläutert, wie diese möglicherweise behoben werden können.
Falsche DynamoDB-Schlüsselzuweisung
Wenn Ihr GraphQL-Vorgang die folgende Fehlermeldung zurückgibt, kann das daran liegen, dass Ihre Vorlagenstruktur für die Anforderungszuweisung nicht mit der Amazon DynamoDB DynamoDB-Schlüsselstruktur übereinstimmt:
The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code
Wenn Ihre DynamoDB-Tabelle beispielsweise einen Hash-Schlüssel hat "id"
und Ihre Vorlage sagt"PostID"
, wie im folgenden Beispiel, führt dies zu dem vorherigen Fehler, weil "id"
nicht übereinstimmt. "PostID"
{ "version" : "2017-02-28", "operation" : "GetItem", "key" : { "PostID" : $util.dynamodb.toDynamoDBJson($ctx.args.id) } }
Fehlender Resolver
Wenn Sie eine GraphQL-Operation ausführen, wie z. B. eine Abfrage, und eine Null-Antwort erhalten, kann dies daran liegen, dass Sie keinen Resolver konfiguriert haben.
Wenn Sie beispielsweise ein Schema importieren, das ein getCustomer(userId:
ID!):
-Feld definiert, und Sie für dieses Feld keinen Resolver konfiguriert haben, erhalten Sie z. B. für die Abfrage getCustomer(userId:"ID123"){...}
eine Antwort, die ungefähr der nachstehenden entspricht:
{ "data": { "getCustomer": null } }
Fehler bei der Zuordnungsvorlage
Wenn Ihre Zuweisungsvorlage nicht korrekt konfiguriert ist, erhalten Sie eine GraphQL-Antwort, deren errorType
MappingTemplate
ist. Das message
-Feld sollte darauf hinweisen, wo das Problem in Ihrer Zuweisungsvorlage liegt.
Wenn Sie beispielsweise in Ihrer Zuweisungsvorlage über kein operation
-Feld verfügen, oder der operation
-Feldname nicht korrekt angegeben wurde, erhalten Sie in etwa folgende Antwort:
{ "data": { "searchPosts": null }, "errors": [ { "path": [ "searchPosts" ], "errorType": "MappingTemplate", "locations": [ { "line": 2, "column": 3 } ], "message": "Value for field '$[operation]' not found." } ] }
Falsche Rückgabetypen
Der Rückgabetyp aus der Datenquelle muss dem definierten Typ eines Objekts in Ihrem Schema entsprechen, andernfalls wird Ihnen möglicherweise ein GraphQL-Fehler angezeigt, der dem folgenden Beispiel entspricht:
"errors": [ { "path": [ "posts" ], "locations": null, "message": "Can't resolve value (/posts) : type mismatch error, expected type LIST, got OBJECT" } ]
Dies könnte beispielsweise bei der folgenden Abfragedefinition auftreten:
type Query { posts: [Post] }
Was eine Anzahl LIST von [Posts]
Objekten erwartet. Wenn Sie beispielsweise eine Lambda-Funktion in Node.JS mit ungefähr folgendem Inhalt hätten:
const result = { data: data.Items.map(item => { return item ; }) }; callback(err, result);
Dies würde einen Fehler zurückgeben, da es sich bei result
um ein Objekt handelt. Sie müssten entweder den Callback in ändern result.data
oder Ihr Schema ändern, um kein a LIST zurückzugeben.
Ungültige Anfragen werden verarbeitet
Wenn AWS AppSync eine Anfrage nicht verarbeitet und nicht an den Field Resolver gesendet werden kann (aufgrund falscher Daten, z. B. einer ungültigen Syntax), gibt die Antwortnutzlast die Felddaten mit den auf gesetzten Werten null
und allen relevanten Fehlern zurück.