Para lo que siguen con la última versión el ejercicio, los comentarios actualmente se hacen de forma diferente. Ahora se usa 3 veces las comillas dobles
const{ gql }=require('apollo-server-express')const typeDefs = gql`"""Esto es un curso en el sistema"""typeCurso{id:ID!titulo:String!"""Esta es la descripción del curso"""descripcion:String!profesor:Profesorrating:Floatcomentarios:[Comentario]}typeProfesor{id:ID!nombre:String!nacionalidad:String!genero:Generocursos:[Curso]}enumGenero{MASCULINOFEMENINO}typeComentario{id:ID!nombre:String!cuerpo:String!}typeQuery{cursos:[Curso]profesores:[Profesor]curso(id:Int):Cursoprofesor(id:Int):Profesor}`module.exports= typeDefs
Cuando se coloca esto
"scripts":{"start":"nodemon ./index.js"}
es importante cometar que puedes ejecutarlo de las siguientes maneras
yarn start
puede ejecutarse usando npm
npm start
pero supongamos que colocamos algo como esto
"scripts":{"start:dev":"nodemon ./index.js"}
Al ejecutarlo con yarn [comando] no tendremos ningún problema al realizar la ejecución, pero si en todo caso lo ejecutáramos usando npm [comando] el comando no se ejecutara ya que start:dev no se encuentra dentro de los comandos que ya tiene por defecto npm por lo que tendríamos que ejecutarlo se la siguiente manera.
npm run start:dev
Al usrar run le estamos diciendo que tiene que ejecutar el comando, por ultimo si quisieras ejecutar el comando sin utilizar yarn o npm puedes realizar lo siguiente.
./node_modules/.bin/nodemon ./index.js
Esto se tiene que realizar dentro de la carpeta del proyecto, despues /.bin/ puedes acceder a cualquier paquete que tengas instalado dentro de tu proyecto.
para un poco mas de información pueden consultar
npm-scripts
Que opciones hay para asegurar (jwt) el server de GraphQL ?
@alvarogrojas acá te dejo un link donde se puede encontrar algo de GraphQL con JWT
Es posible monitorearlo mediante webpack?
Tengo una duda sobre yarn.lock, este archivo tendria que subirse al repositorio
Si, este archivo ayuda a una rápida instalación de dependencias ademas de tener fijadas las dependencias exactas para instalar las mismas versiones tanto en desarrollo como en producción.
A la hora de instalar nodemon me genera un issue
nodemon@1.18.6 postinstall C:\Users\Admin\AppData\Roaming\npm\node_modules\nodemon
> node bin/postinstall || exit 0npm WARN optional SKIPPINGOPTIONALDEPENDENCY: fsevents@1.2.4(node_modules\nodemon\node_modules\fsevents):npm WARN notsup SKIPPINGOPTIONALDEPENDENCY:Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"}(current:{"os":"win32","arch":"x64"})npm ERR! file C:\WINDOWS\system32\cmd.exe;C:\ProgramFiles(x86)\Yarn\bin
npm ERR! path C:\WINDOWS\system32\cmd.exe;C:\ProgramFiles(x86)\Yarn\bin
npm ERR! code ELIFECYCLEnpm ERR! errno ENOENTnpm ERR! syscall spawn C:\WINDOWS\system32\cmd.exe;C:\ProgramFiles(x86)\Yarn\bin
npm ERR! nodemon@1.18.6postinstall:`node bin/postinstall || exit 0`npm ERR! spawn C:\WINDOWS\system32\cmd.exe;C:\ProgramFiles(x86)\Yarn\bin ENOENTnpm ERR!npm ERR!Failed at the nodemon@1.18.6 postinstall script.npmERR!This is probably not a problem with npm.There is likely additional logging output above.npmERR!A complete log ofthis run can be found in:npm ERR!C:\Users\Admin\AppData\Roaming\npm-cache\_logs\2018-11-05T21_59_08_912Z-debug.log
En el issue de github, aperase como solucion la descarga de un archivo .log, aunque no encontré que hacer con el.
Se puede hacer un sistema de usuario en graphql
GraphQL te permite realizar consultas usando JSON, el sistema de usuarios lo creas en backend con un lenguaje de programación y usas GraphQL para exponer la información en lugar de un API RestFull
Pero con rest, protegíamos las rutas solicitando un jwt, ahora deberiamos proteger los resolvers?
Para definir el schema de los tipos y el root hay alguna otra forma de hacerlo que no sea dentro de una variable string?, es decir definirlo en un archivo independiente que se importe
Debes pasarselo como un string, lo que podrias hacer es tener ese string en un archivo aparte y concatenarlo.
No puedo ejecutar yarn start
$ yarn start
yarn run v1.1.0$ nodemon index.js/bin/sh:1: nodemon: not found
error Command failed with exit code 127.info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
No tienes instalado nodemon
ejecuta la siguiente linea en la consola ubicándote en la carpeta del proyecto:
yarn add nodemon -D
y agrega en tu archivo package.json esto:
“scripts”: {
“start”: “nodemon index.js”
},
La definición de un esquema es estructurada?, es decir, importa el orden en que se definen los objetos?
No tanto el orden, pero si estas definiendo que va a devolver de información GraphQL, en este caso por ejemplo el tipo Curso tiene como primer dato id, pero puedes poner de primer dato titulo, la salida o respuesta va a ser consecuente con esto.
Perfecto muchas gracias
Hola! una consulta: al ejecutar yarn start me tira el siguiente error:
$ yarn start
yarn run v1.5.1
$ nodemon index.js
[nodemon] 1.17.1
[nodemon] to restart at any time, enter rs
[nodemon] watching: .
[nodemon] starting node index.js
events.js:183
throw er; // Unhandled ‘error’ event
^
Error: listen EADDRINUSE :::5678
at Object._errnoException (util.js:1022:11)
at _exceptionWithHostPort (util.js:1044:20)
at Server.setupListenHandle [as _listen2] (net.js:1351:14)
at listenInCluster (net.js:1392:12)
at Server.listen (net.js:1476:7)
at Function.listen (/home/intranet.biblostravel.com/amansilla/workspace/graphql/node_modules/express/lib/application.js:618:24)
at Object.<anonymous> (/home/intranet.biblostravel.com/amansilla/workspace/graphql/index.js:22:5)
at Module._compile (module.js:643:30)
at Object.Module._extensions…js (module.js:654:10)
at Module.load (module.js:556:32)
[nodemon] app crashed - waiting for file changes before starting…
alguna idea de que puede estar pasando?
Desde ya muchas gracias!
Lo que veo es que hay un error cerca de la linea 22 del archivo index.js dentro de la carpeta graphql, puedes revisar ese archivo o compartirlo para ayudarte a solucionar tu problema.
Buenas!
Error: listen EADDRINUSE:::5678
Significa que al puerto 5678 ya lo tienes en uso.
Hola alguien tiene este error con el schema ¿?
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>Error</title></head><body><pre>Error:Expectedundefined to be a GraphQL schema.<br> at invariant(/Users/wilsonperez/Desktop/CursosTomados/graphql/node_modules/graphql/jsutils/invariant.js:19:11)<br> at validateSchema(/Users/wilsonperez/Desktop/CursosTomados/graphql/node_modules/graphql/type/validate.js:55:60)<br> at assertValidSchema(/Users/wilsonperez/Desktop/CursosTomados/graphql/node_modules/graphql/type/validate.js:80:16)<br> at Object.validate(/Users/wilsonperez/Desktop/CursosTomados/graphql/node_modules/graphql/validation/validate.js:58:35)<br> at doRunQuery(/Users/wilsonperez/Desktop/CursosTomados/graphql/node_modules/apollo-server-core/dist/runQuery.js:110:38)<br> at /Users/wilsonperez/Desktop/CursosTomados/graphql/node_modules/apollo-server-core/dist/runQuery.js:21:56<br> at process._tickCallback(internal/process/next_tick.js:68:7)</pre></body></html>
en mi schema.js tengo así
const{ makeExecutableSchema }=require('graphql-tools')const typeDefs =` #esto es un curso del sistema
type Curso {
id: ID!
titulo: String!
descripciom: String!
profesor: Profesor
rating: Float
comentarios: [Comentario]
}
type Profesor {
id: ID!
nombre: String!
nacioalidad: String!
genero: Genero
curso: [Curso]
}
enum Genero {
MASCULINO
FEMENINO
}
type Comentario {
id: ID!
nombre: String!
cuerpo: String!
}
type Query {
cursos: [Curso]
profesor: [Profesor]
curso(id: Int): Curso
profesor(id: Int): Profesor
}
`const schema =makeExecutableSchema({ typeDefs })module.exports= schema
Prueba usando import { makeExecutableSchema } from 'graphql-tools';
en lugar de const { makeExecutableSchema } = require('graphql-tools')
No, eso salio ahora
/Users/wilsonperez/Desktop/CursosTomados/graphql/schema.js:1(function(exports, require, module, __filename, __dirname){import{ makeExecutableSchema }from'graphql-tools';^SyntaxError:Unexpected token { at newScript(vm.js:74:7) at createScript(vm.js:246:10) at Object.runInThisContext(vm.js:298:10) at Module._compile(internal/modules/cjs/loader.js:670:28) at Object.Module._extensions..js(internal/modules/cjs/loader.js:713:10) at Module.load(internal/modules/cjs/loader.js:612:32) at tryModuleLoad(internal/modules/cjs/loader.js:551:12) at Function.Module._load(internal/modules/cjs/loader.js:543:3) at Module.require(internal/modules/cjs/loader.js:650:17) at require(internal/modules/cjs/helpers.js:20:18)[nodemon] app crashed - waiting for file changes before starting...