Siddharth Sharma
Siddharth Sharma

Reputation: 33

Indexing List Type field in a GraphQL type from within a Query

Say I have the following GraphQL Schema

query {
    allAuthors: [Author]
}

type Author {
   id: ID!
   name: String!
   books: [Book]
}

type Book {
    id: ID!
    name: String!
    author: Author!
}

Now I can successfully run the following query to get all the authors and their associated books

query {
    allAuthors {
        name,
        books { 
             name
        }
    }
}

However, if I only want to get the first three books for all authors, how would I go about doing something like that? Can we index the books field in the Author type from within a query? If so, how?

I tried something like this and it doesn't work

query {
    allAuthors {
        name,
        books[3] { 
             name
        }
    }
}

Upvotes: 0

Views: 1007

Answers (1)

David Maze
David Maze

Reputation: 158848

GraphQL doesn't have syntax for this.

You can add a "limit" parameter to a field, and this is common enough:

type Query {
  allAuthors(limit: Int, offset: Int): [Author!]!
}
type Author {
  id: ID!
  name: String!
  books(limit: Int, offset: Int): [Book!]!
}

If you add parameters like this to the schema, then the query you want (for all authors, get the first three books) could look like

{
  allAuthors {
    name
    books(limit: 3) { 
      name
    }
  }
}

Upvotes: 2

Related Questions