// server.jsconst express = require('express');const { graphqlHTTP } = require('express-graphql');const { buildSchema } = require('graphql');const cors = require( `cors` ); // deals with Cross-Origin issuesvar fakeDatabase = [{sid:parseInt(Math.random()*10000),
name:'Philip',
subjects:['Chemistry', 'Physics', 'Maths'],
address:{
unit: 'H505',
city: 'London',
country: 'United Kingdom',
postCode: 33100}}];var schema = buildSchema(fs.readFileSync('schema.graphql','utf8'));// Each field is either a constant or a callbackvar root = {
name: ()=>fakeDatabase[0].name,
sid: arg => (arg.year+"-"+fakeDatabase[0].sid),
subjects: fakeDatabase[0].subjects,
address: () => ({
city: ()=>fakeDatabase[0].address.city
}),
setName: arg => {fakeDatabase[0].name=arg.nn; return arg.nn;}};var app = express();app.use(cors());app.use('/graphql', graphqlHTTP({
schema: schema,
rootValue: root,
graphiql: true,}));app.listen(4000);console.log('Running a GraphQL API server at http://localhost:4000/graphql');