Olá a todos
Eu estou codificando um exemplo de uso do GraphQL com Nodejs, mas eu estou recebendo um erro de syntax relacionado a [ : ] [ Dois Pontos ], mas eu comparei meu codigo, com o da documentação oficial e esta tudo certo. Será que alguem, conseguiria achar o erro ?
OBS: Esta incluso neste post [ Exemplo Documentação, Meu Exemplo, Mensagem de Erro, Código Completo ]
Exemplo Documentação
module.exports = /* GraphQL */ `
type Client {
id: ID!
name: String
age: Int
products: [Product]
}
type Query {
clients: [Client]
client(id: ID!): Client
}
type Mutation {
addClient(name: String!, age: Int!): Client
}
`
Meu Exemplo
const typeDefs = `
type Pessoa {
_id: ID
_codigo: Float
_nome: String
_idade: Int
_email: String
}
input inputPessoa {
_codigo: Float
_nome: String
_idade: Int
_email: String
}
type Query {
resposta: String
saudacao(nome: String!): String
findPessoaOne(codigo: Float): Pessoa
findPessoa(input: inputPessoas): [Pessoa]
}
type Mutation {
insertPessoa(input: inputPessoa): Pessoa
updatePessoa(codigo: Float, input: inputPessoa) Pessoa
deletePessoa(codigo: Float) [Pessoa]
}
`;
Mensagem de Erro
C:\Users\Core\node\node_modules\graphql\language\parser.js:1413
throw (0, _syntaxError.syntaxError)(
^
GraphQLError: Syntax Error: Expected ":", found Name "Pessoa".
at syntaxError (C:\Users\Core\node\node_modules\graphql\error\syntaxError.js:15:10)
at Parser.expectToken (C:\Users\Core\node\node_modules\graphql\language\parser.js:1413:40)
at Parser.parseFieldDefinition (C:\Users\Core\node\node_modules\graphql\language\parser.js:847:10)
at Parser.optionalMany (C:\Users\Core\node\node_modules\graphql\language\parser.js:1510:28)
at Parser.parseFieldsDefinition (C:\Users\Core\node\node_modules\graphql\language\parser.js:831:17)
at Parser.parseObjectTypeDefinition (C:\Users\Core\node\node_modules\graphql\language\parser.js:803:25)
at Parser.parseDefinition (C:\Users\Core\node\node_modules\node_modules\graphql\language\phql\language\parser.js:171:23)
at Parser.many (C:\Users\Core\node\node_modules\graphql\language\parser.js:1529:26)
at Parser.parseDocument (C:\Users\Core\node\node_modules\graphql\language\parser.js:121:25)
at parse (C:\Users\Core\node\node_modules\graphql\language\parser.js:32:17) {
path: undefined,
locations: [ { line: 26, column: 57 } ],
extensions: [Object: null prototype] {}
}
Codigo Completo
// Requires
const express = require('express');
const GraphQL_HTTP = require('express-graphql');
const { mergeSchemas } = require('@graphql-tools/schema');
// Run
// const connect = MongoClient.connect('');
const app = express();
const getCode = () => { return 10 };
// GraphQL Definitions || Query and Mutation
const typeDefs = `
type Pessoa {
_id: ID
_codigo: Float
_nome: String
_idade: Int
_email: String
}
input inputPessoa {
_codigo: Float
_nome: String
_idade: Int
_email: String
}
type Query {
resposta: String
saudacao(nome: String!): String
findPessoaOne(codigo: Float): Pessoa
findPessoa(input: inputPessoas): [Pessoa]
}
type Mutation {
insertPessoa(input: inputPessoa): Pessoa
updatePessoa(codigo: Float, input: inputPessoa) Pessoa
deletePessoa(codigo: Float) [Pessoa]
}
`;
// Functions
const resolvers = {
Query: {
resposta: function() {
return `GraphQL Conectado com Sucesso...`;
},
saudacao: function(_, args) {
return `Olá ${args.nome}! Seja Muito Bem Vindo(a) a GraphQL!!!! `
},
findPessoaOne: function(_, args) {
return db.collection('GraphQL-Pessoa').findOne({codigo: args.codigo})
.then((result) => {
return result;
});
},
findPessoa: function(_, args) {
return db.collection(`GraphQL-Pessoa`).find(args.input).toArray()
.then((result) => {
return result;
});
},
Mutation: {
insertPessoa: function(_, args) {
args.input.codigo = getCode();
return db.collection(`GraphQL-Pessoa`).insertOne(args.input)
.then((result) => {
return result.ops[0];
});
},
updatePessoa: function(_, args) {
return db.collection('GraphQL-Pessoa').updateOne({codigo: args.codigo}, {$set: args.input})
.then((result) => {
if(result.result.n > 0) return `Registro Alterado com Sucesso!`;
else return `Ocorreu um erro ao alterar o registro`;
});
},
deletePessoa: function(_, args) {
return db.collection(`GraphQL-Pessoa`).deleteOne({codigo: args.codigo})
.then((result) => {
if(result.result.n > 0) return `Registro Deletado com Sucesso!`;
else return `Ocorreu um erro ao deletar o registro`;
});
}
}
}
};
const schema = mergeSchemas({
typeDefs: typeDefs,
resolvers: resolvers
})
// Listen
app.listen(3005, () => {
console.log(`Servidor Rodando na Porta 3005`);
})
Obrigado