As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Solução de problemas e erros comuns no AWS AppSync
Esta seção discute alguns erros comuns e como solucioná-los.
Mapeamento de chave do DynamoDB incorreto
Se a operação do GraphQL retornar a seguinte mensagem de erro, pode ser porque a estrutura do modelo de mapeamento da solicitação não corresponde à estrutura da chave do Amazon DynamoDB:
The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code
Por exemplo, se a tabela do DynamoDB tem uma chave de hash chamada "id"
e o modelo diz "PostID"
, conforme o exemplo a seguir, isso resulta no erro anterior, pois "id"
não corresponde a "PostID"
.
{ "version" : "2017-02-28", "operation" : "GetItem", "key" : { "PostID" : $util.dynamodb.toDynamoDBJson($ctx.args.id) } }
Resolvedor ausente
Se você executar uma operação do GraphQL, como uma consulta, e obter uma resposta nula, isso pode acontecer por não ter um resolvedor configurado.
Por exemplo, se você importar um esquema que define um campo getCustomer(userId:
ID!):
, e não tiver configurado um resolvedor para esse campo, então ao executar uma consulta como getCustomer(userId:"ID123"){...}
, você receberá uma resposta como a seguinte:
{ "data": { "getCustomer": null } }
Erros do modelo de mapeamento
Se o modelo de mapeamento não estiver configurado corretamente, você receberá uma resposta do GraphQL em que errorType
é MappingTemplate
. O campo message
deve indicar onde o problema está no modelo de mapeamento.
Por exemplo, caso não tenha um campo operation
no modelo de mapeamento da solicitação, ou se o nome do campo operation
estiver incorreto, você receberá uma resposta como a seguinte:
{ "data": { "searchPosts": null }, "errors": [ { "path": [ "searchPosts" ], "errorType": "MappingTemplate", "locations": [ { "line": 2, "column": 3 } ], "message": "Value for field '$[operation]' not found." } ] }
Tipos de retorno incorretos
O tipo de retorno da fonte de dados deve corresponder ao tipo definido de um objeto no esquema, caso contrário, poderá receber um erro do GraphQL como:
"errors": [ { "path": [ "posts" ], "locations": null, "message": "Can't resolve value (/posts) : type mismatch error, expected type LIST, got OBJECT" } ]
Por exemplo, isso pode ocorrer com a seguinte definição de consulta:
type Query { posts: [Post] }
Que espera uma LISTA de objetos [Posts]
. Por exemplo, caso tenha uma função do Lambda no Node.JS com algo semelhante ao seguinte:
const result = { data: data.Items.map(item => { return item ; }) }; callback(err, result);
Isso lançaria um erro uma vez que result
é um objeto. Seria necessário alterar o retorno de chamada para result.data
ou alterar o esquema para não retornar uma LISTA.
Processamento de solicitações inválidas
Quando o AWS AppSync não conseguir processar e enviar uma solicitação (devido a dados impróprios, como sintaxe inválida) para o resolvedor de campo, a carga útil da resposta retornará os dados do campo com valores definidos como null
e quaisquer erros relevantes.