https://graphql.org/code/#javascript
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 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
import { GraphQLInt, GraphQLList } from 'graphql' import { graphql, GraphQLSchema, GraphQLObjectType, GraphQLString, GraphQLFloat } from 'graphql' const dataFake = async () => { return { id: 232, className: '12A2', students: [ ], } } const teacherFake = async (filter: { id: number }) => { const teachersFake = await (async () => [ { id: 1, name: 'Hanna', subject: 'Math' }, { id: 2, name: 'Dr. Strangle', subject: 'Chemistry' }, ])() return teachersFake.filter(item => item.id === filter.id) } const studentType = new GraphQLObjectType({ name: 'students', fields: { id: { type: GraphQLInt }, name: { type: GraphQLString }, age: { type: GraphQLInt }, email: { type: GraphQLString }, mark: { type: GraphQLFloat }, }, }) const teacherType = new GraphQLObjectType({ name: 'teacher', fields: { id: { type: GraphQLInt }, name: { type: GraphQLString }, subject: { type: GraphQLString }, }, }) const rootSchema = new GraphQLSchema({ query: new GraphQLObjectType({ name: 'rootSchema', fields: { id: { type: GraphQLInt }, className: { type: GraphQLString }, students: { type: new GraphQLList(studentType) }, teachers: { type: new GraphQLList(teacherType), description: 'List of all Teacher', args: { id: { type: GraphQLInt }, }, resolve: async (parent, args, context, info) => { return await teacherFake({ id: args.id }) }, }, }, }), }) const studentGrapQlstart = async () => { const response = await graphql({ schema: rootSchema, source: 'query { id, className, students { name, age }, teachers(id:1) { id, name } }', rootValue: await dataFake(), }) console.log(JSON.stringify(response)) } studentGrapQlstart() |