In this lesson we'll use a simple GraphQL IDL schema to deploy and explore a fully functional GraphQL service in minutes with graphql-up.
Install:
npm i -g graphql-up -g
Create schema:
type Person { id: ID!, name: String!, tasks: [Task!]! @relation(name: "PersonTask") } type Task { id: ID!, description: String! person: Person @relation(name: "PersonTask") }
Run:
graphql-up tasks.schema
It will generate two url for use, just grap one. It will open graphcool.
We can query the data:
{ allPersons { id, name, tasks { id, description } } }
We won't get any, because we haven't create anything.
Create some mock data:
mutation { createPerson(name:"Zhentian") { id, name } } // get back "data": { "createPerson": { "id": "cj2t31akybh3g01184klolj0t", "name": "Zhentian" } } }
Now if query again:
{ allPersons { id, name, tasks { id, description } } } // get back "data": { "allPersons": [ { "id": "cj2t31akybh3g01184klolj0t", "name": "Zhentian", "tasks": [] } ] } }
Create data for task:
mutation { createTask(description: "Learn GraphQL", personId: "cj2t31akybh3g01184klolj0t") { id, description } } // get back "data": { "createTask": { "id": "cj2t37fo7kizn0102kf9otzh5", "description": "Learn GraphQL" } } }
When we do the query again:
{ allPersons { id, name, tasks { id, description } } } // get back "data": { "allPersons": [ { "id": "cj2t31akybh3g01184klolj0t", "name": "Zhentian", "tasks": [ { "id": "cj2t37fo7kizn0102kf9otzh5", "description": "Learn GraphQL" } ] } ] } }
Create Task and Person in same mutation:
mutation { createPerson(name:"Wan", tasks:[ {description: "Learn Recompose"}, {description: "Learn SCSS"} ]) { id, name } }
After done with playground, can click "Generate code". Select Node env:
Install:
npm install lokka lokka-transport-http --save
Copy the code to index.js file, we should be able to run the code and get data back.