DEV Community

karthikeyan
karthikeyan

Posted on • Edited on

1 1

simple way to fetch data using graphQl and Apollo

Hi,
Today i am going to show how to fetch data using graphql and apollo client
here first you need two seperate folder one for client and other for server

in server you are going to install graphql, apollo-client etc..
here i am just using graphql playground for displaying the data using queries
for database i am not using any database program just create myself and playing around that

lets see what's there in the server

two important thing need to know about that before

schema :
it's human-readable schema definition language (or SDL) that you use to define your schema and store it as a string.

type-system :
The most basic components of a GraphQL schema are object types, which just represent a kind of object you can fetch from your service, and what fields it has. In the GraphQL schema language

schema

const graphql = require("graphql");
const {
  GraphQLObjectType,
  GraphQLSchema,
  GraphQLInt,
  GraphQLString,
  GraphQLList,
} = graphql;

//mock data
const data1 = require("../database/mockdata3.json");
// this is typedef we can see this after
const UserType = require("./TypeDefs/UserType");

const RootQuery = new GraphQLObjectType({
  name: "RootQueryType",
  fields: {
    getAllUsers: {                             
      type: new GraphQLList(UserType),
      // you can pass argument 
      args: { Name: { type: GraphQLString } },  
      resolve(parent, args) {
          // write return what you need back
        return data1;
      },
    },
  },
});
// finally we are going to export this 
module.exports = new GraphQLSchema({ query: RootQuery });
Enter fullscreen mode Exit fullscreen mode

typedef - just represent a kind of object you can fetch from your service, and what fields it has

const UserType = new GraphQLObjectType({
  name: "User",
  fields: () => ({
//any fields you can define but you must enter the data-type
    Name: { type: GraphQLString  },
    Age: { type: GraphQLInt },
  }),
});

module.exports = UserType;
Enter fullscreen mode Exit fullscreen mode

and finally we need to run this using express or http, here i am using express

const express = require("express");
const app = express();
const PORT = 6969;
const { graphqlHTTP } = require("express-graphql");
const schema = require("./Schemas/Schema");
const cors = require("cors");

app.use(cors());
app.use(express.json());
app.use(
  "/data",
  graphqlHTTP({
    schema,
    // this is graphql playground field 
    graphiql: true,
  })
);


app.listen(PORT, () => {
  console.log("Server running");
});

Enter fullscreen mode Exit fullscreen mode

for client you can use any of the framework to fetch that data
and display it

we can see how to get that data from server and display it in client in next post
bye!

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read full post →

Top comments (0)

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up