GraphQL — query language for APIs with flexible data fetching.
1const { ApolloServer, gql } = require("apollo-server");23const typeDefs = gql`4 type User {5 id: ID!6 name: String!7 email: String!8 posts: [Post!]9 }1011 type Post {12 id: ID!13 title: String!14 author: User!15 }1617 type Query {18 users: [User!]19 user(id: ID!): User20 }2122 type Mutation {23 createUser(name: String!, email: String!): User!24 }25`;2627const resolvers = {28 Query: {29 users: () => User.find(),30 user: (_, { id }) => User.findById(id),31 },32 User: {33 posts: (user) => Post.find({ authorId: user.id }),34 },35 Mutation: {36 createUser: (_, { name, email }) => User.create({ name, email }),37 },38};3940const server = new ApolloServer({ typeDefs, resolvers });41server.listen().then(({ url }) => console.log(`Server at ${url}`));
Key points: