Langesh
Langesh

Reputation: 98

Graphql doesn't return the data

I'm trying to find a specific data based on the id in graphql.

But it is returning null Here is my query and result.

I have also tried the mutation. Here is also it is returning null.

What's wrong with this below code.

const { ApolloServer } = require("@apollo/server");
const { startStandaloneServer } = require("@apollo/server/standalone");

const students = [
  {
    name: "langesh",
    roll: 131,
  },
  {
    name: "ram",
    roll: 134,
  },
];

const typeDefs = `#graphql
    type Student {
        name: String,
        roll: Int,
    }

    type Query {
        students: [Student]
        student(roll: Int) : Student
    }
`;

const resolvers = {
  Query: {
    students: () => students,
    student: (parent, roll) => {
      return students.find((s) => s.roll === roll);
    },
  },
};

const server = new ApolloServer({ typeDefs, resolvers });

async function startServer() {
  const { url } = await startStandaloneServer(server, {
    listen: {
      port: 8000,
    },
  });
  console.log(`url : ${url}`);
}

startServer();

Upvotes: 0

Views: 290

Answers (1)

Michel Floyd
Michel Floyd

Reputation: 20227

You need to destructure the args in your resolver.

Instead of:

student: (parent, roll) => {
  return students.find((s) => s.roll === roll);
}

do:

student: (parent, { roll }) => {
  return students.find((s) => s.roll === roll);
}

Upvotes: 1

Related Questions