GraphQL is a powerful query language for APIs that gives clients the exact data they need. When combined with Node.js, it enables fast, flexible, and strongly typed APIs.
This guide walks you through:
Learn software engineering online
GraphQL is a query language created by Facebook that allows clients to request exactly the data they need.
GraphQL in Node.js has three main parts:
Defines what data can be queried, mutated, or subscribed to.
Functions that fetch or manipulate the data.
Apollo Server or Express GraphQL handles the API endpoint.
mkdir graphql-node
cd graphql-node
npm init -y We’ll use Apollo Server (most popular GraphQL server for Node.js).
npm install @apollo/server graphql express body-parser cors
npm install @apollo/server/express4 Create a file: schema.js
import { gql } from "graphql-tag";
export const typeDefs = gql`
type Book {
id: ID!
title: String!
author: String!
}
type Query {
books: [Book!]
book(id: ID!): Book
}
type Mutation {
addBook(title: String!, author: String!): Book!
}
`;
Create a file: resolvers.js
export const resolvers = {
Query: {
books: () => books,
book: (_, args) => books.find((b) => b.id === args.id),
},
Mutation: {
addBook: (_, args) => {
const newBook = {
id: String(books.length + 1),
title: args.title,
author: args.author,
};
books.push(newBook);
return newBook;
},
},
};
// Temporary in-memory database
const books = [
{ id: "1", title: "Atomic Habits", author: "James Clear" },
{ id: "2", title: "Deep Work", author: "Cal Newport" },
];
Create server.js:
import express from "express";
import cors from "cors";
import bodyParser from "body-parser";
import { ApolloServer } from "@apollo/server";
import { expressMiddleware } from "@apollo/server/express4";
import { typeDefs } from "./schema.js";
import { resolvers } from "./resolvers.js";
const app = express();
// Create Apollo Server instance
const server = new ApolloServer({
typeDefs,
resolvers,
});
async function startServer() {
await server.start();
app.use(
"/graphql",
cors(),
bodyParser.json(),
expressMiddleware(server)
);
app.listen(4000, () => {
console.log("🚀 GraphQL Server running at http://localhost:4000/graphql");
});
}
startServer();
node server.js Visit:
📌 http://localhost:4000/graphql
You will see Apollo Sandbox where you can run queries.
query {
books {
id
title
author
}
} query {
book(id: "1") {
title
}
}
mutation {
addBook(title: "Clean Code", author: "Robert C. Martin") {
id
title
}
}
graphql-node/
│── package.json
│── server.js
│── schema.js
│── resolvers.js
GraphQL works great with:
Example with Mongoose:
Query: {
books: async () => await BookModel.find(),
},
Mutation: {
addBook: async (_, args) => await BookModel.create(args),
}
Connecting Node.js with GraphQL involves:
/graphql endpointLatest tech news and coding tips.
Database migration is one of the most challenging tasks in software engineering. While both PostgreSQL…
Modern JavaScript isn’t just let, const, arrow functions, and promises anymore. Over the years, the language has…
Software development is one of the most rewarding careers in technology, but it is also…
Printing a document in JavaScript usually means triggering the browser’s print dialog and controlling what…
The display property controls how an element behaves in the layout and how its children are arranged. Access software…
JavaScript is one of the most flexible programming languages ever created. That flexibility is powerful,…