Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Résolution des problèmes et erreurs courantes dans AWS AppSync
Cette section présente certaines erreurs courantes et la manière de les résoudre.
Mappage de clé DynamoDB incorrect
Si votre opération GraphQL renvoie le message d'erreur suivant, c'est peut-être parce que la structure de votre modèle de mappage de demandes ne correspond pas à la structure clé d'Amazon DynamoDB :
The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code
Par exemple, si une clé de hachage est "id"
appelée dans votre table DynamoDB et que votre modèle "PostID"
indique, comme dans l'exemple suivant, cela entraîne l'erreur précédente, car elle ne correspond pas. "id"
"PostID"
{ "version" : "2017-02-28", "operation" : "GetItem", "key" : { "PostID" : $util.dynamodb.toDynamoDBJson($ctx.args.id) } }
Résolveur manquant
Si vous exécutez une opération GraphQL, telle qu'une requête, et que vous obtenez une réponse null, cela peut signifier que vous n'avez pas de résolveur configuré.
Par exemple, si vous importez un schéma qui définit un champ getCustomer(userId:
ID!):
et que vous n'avez pas configuré de résolveur pour ce champ, lorsque vous exécutez une requête telle que getCustomer(userId:"ID123"){...}
, vous obtenez une réponse semblable à la suivante :
{ "data": { "getCustomer": null } }
Erreurs du modèle de mappage
Si votre modèle de mappage n'est pas correctement configuré, vous recevrez une réponse GraphQL dont l'élément errorType
a pour valeur MappingTemplate
. Le champ message
doit indiquer où le problème se situe dans votre modèle de mappage.
Par exemple, si vous n'avez pas de champ operation
dans votre modèle de mappage de demande ou si le nom du champ operation
est incorrect, vous obtenez une réponse similaire à la suivante :
{ "data": { "searchPosts": null }, "errors": [ { "path": [ "searchPosts" ], "errorType": "MappingTemplate", "locations": [ { "line": 2, "column": 3 } ], "message": "Value for field '$[operation]' not found." } ] }
Types de retour incorrects
Le type de retour renvoyé par votre source de données doit correspondre au type défini d'un objet dans votre schéma, sinon, vous risquez de voir une erreur GraphQL similaire à la suivante :
"errors": [ { "path": [ "posts" ], "locations": null, "message": "Can't resolve value (/posts) : type mismatch error, expected type LIST, got OBJECT" } ]
Par exemple, cela peut se produire avec la définition de requête suivante :
type Query { posts: [Post] }
Ce qui attend un LIST tas d'[Posts]
objets. Par exemple, si vous avez une fonction Lambda dans Node.JS avec quelque chose de similaire à ce qui suit :
const result = { data: data.Items.map(item => { return item ; }) }; callback(err, result);
Vous obtenez une erreur car result
est un objet. Vous devrez soit changer le rappel, result.data
soit modifier votre schéma pour ne pas renvoyer unLIST.
Traitement des demandes non valides
Lorsqu'il AWS AppSync est impossible de traiter et d'envoyer une demande (en raison de données incorrectes telles qu'une syntaxe non valide) au résolveur de champs, la charge utile de la réponse renvoie les données du champ avec les valeurs définies sur null
et les erreurs pertinentes.