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);
|