1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
   | const express = require('express'); const {buildSchema} = require('graphql'); const graphqlHTTP = require('express-graphql');
 
  const schema = buildSchema(`   input AccountInput {     name: String     age: Int     sex: String     department: String   }   type Account {     name: String     age: Int     sex: String     department: String   }   type Mutation {     createAccount(input: AccountInput): Account     updateAccount(id: ID!, input: AccountInput): Account   }   type Query {     accounts: [Account]   } `);
  const fakeDb = {};
 
  const root = {   accounts() {          var arr = [];     for(const key in fakeDb) {       arr.push(fakeDb[key])     }     return arr;   },   createAccount({input}) {          fakeDb[input.name] = input;     return fakeDb[input.name];   },   updateAccount({id, input}) {          const updatedAccount = Object.assign({}, fakeDb[id], input);     fakeDb[id] = this.updatedAccount;     return updatedAccount;   } }
  const app = express();
  app.use('/graphql', graphqlHTTP({   schema: schema,   rootValue: root,   graphiql: true }))
  app.listen(3000);
 
  |