63

I'm trying to query a list of objects having array of IDs. Something similar to following SQL query:

SELECT name FROM events WHERE id IN(1,2,3,...);

How do I achieve this in GraphQL?

Rafael Sedrakyan
  • 2,541
  • 10
  • 34
  • 42

3 Answers3

78

You can definitely query with an array of values! Here's what the query itself would look like:

{
  events(containsId: [1,2,3]) {
    ...
  }
}

And the type would look something like:

const eventsType = new GraphQLObjectType({
  name: 'events',
  type: // your type definition for events,
  args: {
    containsId: new GraphQLList(GraphQLID)
  },
  ...
});

If you wanted to parameterize this query, here's an example of that:

{
  query: `
    query events ($containsId: [Int]) {
      events(containsId: $containsId) {
        id
        name
      }
    }
  `,
  variables: {
    containsId: [1,2,3]
  }
}
browserless
  • 2,090
  • 16
  • 16
1

In my use case I did as:

query:

vehicleTypes: { name: ["Small", "Minivan"] }

input:

vehicleTypes: VehicleTypesInput

then use like this:

Input VehicleTypesInput {
    name: [String]!
}
1

I just do this:

query nameOfYourQuery {
  allEvents(filter: { id: { in: [1,2,3] } }) {
    nodes {
      name
    }
  }
}

If the array is a variable, then it would look like this (in Gatsby, at least):

query nameOfYourQuery($arrayOfID: [String]) {
  allEvents(filter: { id: { in: $arrayOfID: [String] } }) {
    nodes {
      name
    }
  }
}
Félix Paradis
  • 5,165
  • 6
  • 40
  • 49
  • 1
    Can't wait for [graphql syntax highlighting to be available on SO](https://meta.stackexchange.com/questions/358925/adding-graphql-syntactical-highlighting-for-code-blocks)... – Félix Paradis Nov 30 '21 at 00:13
  • allEvents has no argument named \"filter\"". From what I understand the remote side needs to have this option implemented. I don't understand all the hype around graphQL, there is no magic, as api clients, we still need to ask api developper for new features when needed, or do multiples queries in case what we look for is not implemented.... – Tobbey Feb 22 '23 at 16:22