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á.
Iniciar com um esquema GraphQL sem diretivas
Você pode começar com um banco de dados Neptune vazio e usar um esquema GraphQL sem diretivas para criar os dados e consultá-los. O comando abaixo cria automaticamente recursos AWS para fazer o seguinte:
neptune-for-graphql \ --input-schema-file(your GraphQL schema file)--create-update-aws-pipeline \ --create-update-aws-pipeline-name(name for your new GraphQL API)\ --create-update-aws-pipeline-neptune-endpoint(your Neptune database endpoint):(port number)\ --output-resolver-query-https
O arquivo do esquema GraphQL deve incluir os tipos de esquema GraphQL, conforme mostrado no exemplo TODO abaixo. O utilitário analisa seu esquema e cria uma versão estendida com base em seus tipos. Ele adiciona consultas e mutações para os nós armazenados no banco de dados de grafos e, se seu esquema tiver tipos aninhados, ele adicionará relacionamentos entre os tipos armazenados como bordas no banco de dados.
O utilitário cria uma API AppSync GraphQL e todos os AWS recursos necessários. Eles incluem dois perfis do IAM e uma função do Lambda contendo o código do resolvedor GraphQL. Quando o comando for concluído, você poderá encontrar uma nova API do GraphQL com o nome especificado no AppSync console. Para testá-lo, use Consultas no AppSync menu.
O exemplo a seguir ilustra como isso funciona:
Exemplo de Todo, partindo de um esquema GraphQL sem diretivas
Neste exemplo, partimos de um esquema Todo GraphQL sem diretivas, que você pode encontrar no diretório. ???samples??? Ele inclui estes dois tipos:
type Todo { name: String description: String priority: Int status: String comments: [Comment] } type Comment { content: String }
Esse comando processa o esquema Todo e um endpoint de um banco de dados Neptune vazio para criar uma API GraphQL em: AWS AppSync
neptune-for-graphql / --input-schema-file ./samples/todo.schema.graphql \ --create-update-aws-pipeline \ --create-update-aws-pipeline-name TodoExample \ --create-update-aws-pipeline-neptune-endpoint(empty Neptune database endpoint):(port number)\ --output-resolver-query-https
O utilitário cria um novo arquivo na pasta de saída chamadaTodoExample.source.graphql, e a API GraphQL em. AppSync O utilitário infere o seguinte:
No tipo Todo, ele adicionou
@relationshipum novo CommentEdge tipo. Isso instrui o resolvedor a conectar Todo ao Comment usando uma borda de banco de dados gráfica chamada CommentEdge.Ele adicionou uma nova entrada chamada TodoInput para ajudar nas consultas e mutações.
Ele adicionou duas consultas para cada tipo (Todo, Comment): uma para recuperar um único tipo usando um
idou qualquer um dos campos de tipo listados na entrada e outra para recuperar vários valores, filtrados usando a entrada desse tipo.Ele adicionou três mutações para cada tipo: criar, atualizar e excluir. O tipo a ser excluído é especificado usando um
idou a entrada desse tipo. Essas mutações afetam os dados armazenados no banco de dados Neptune.Ele adicionou duas mutações para conexões: conectar e excluir. Eles tomam como entrada os IDs dos nós entre os vértices usados pelo Neptune e a conexão são bordas no banco de dados.
O resolvedor reconhece as consultas e as mutações pelos nomes, mas você pode personalizá-las conforme mostrado abaixo.
Aqui está o conteúdo do arquivo TodoExample.source.graphql:
type Todo { _id: ID! @id name: String description: String priority: Int status: String comments(filter: CommentInput, options: Options): [Comment] @relationship(type: "CommentEdge", direction: OUT) bestComment: Comment @relationship(type: "CommentEdge", direction: OUT) commentEdge: CommentEdge } type Comment { _id: ID! @id content: String } input Options { limit: Int } input TodoInput { _id: ID @id name: String description: String priority: Int status: String } type CommentEdge { _id: ID! @id } input CommentInput { _id: ID @id content: String } input Options { limit: Int } type Query { getNodeTodo(filter: TodoInput, options: Options): Todo getNodeTodos(filter: TodoInput): [Todo] getNodeComment(filter: CommentInput, options: Options): Comment getNodeComments(filter: CommentInput): [Comment] } type Mutation { createNodeTodo(input: TodoInput!): Todo updateNodeTodo(input: TodoInput!): Todo deleteNodeTodo(_id: ID!): Boolean connectNodeTodoToNodeCommentEdgeCommentEdge(from_id: ID!, to_id: ID!): CommentEdge deleteEdgeCommentEdgeFromTodoToComment(from_id: ID!, to_id: ID!): Boolean createNodeComment(input: CommentInput!): Comment updateNodeComment(input: CommentInput!): Comment deleteNodeComment(_id: ID!): Boolean } schema { query: Query mutation: Mutation }
Agora você pode criar e consultar dados. Aqui está um instantâneo do console de AppSync consultas usado para testar a nova API GraphQL, nomeada TodoExampleAPI neste caso. Na janela central, o Explorador mostra uma lista de consultas e mutações das quais você pode escolher uma consulta, os parâmetros de entrada e os campos de retorno. Esta captura de tela mostra a criação de um tipo de nó Todo usando a mutação createNodeTodo:
Esta captura de tela mostra a consulta de todos os nós Todo usando a consulta getNodeTodos:
Depois de criar um comentário usando createNodeComment, você pode usar mutação connectNodeTodoToNodeCommentEdgeCommentEdge para conectá-los especificando seus IDs. Aqui está uma consulta aninhada para recuperar Todos e seus comentários anexados:
Se quiser fazer alterações no arquivo TodoExample.source.graphql conforme descrito em Trabalhar com diretivas, você poderá usar o esquema editado como entrada e executar o utilitário novamente. O utilitário então modificará a API GraphQL adequadamente.