0

I have a query that works when manually typed:

queryName(where: { ids: ["1234567890123456789", "1234567890123456790"] }, offset: 0, max: 10) {

but when the same values are passed in a variable:

const idArr = ["1234567890123456789", "1234567890123456790"];
...
queryName(where: { ids: ${idArr} }, offset: 0, max: 10) {

I get the error:

Uncaught GraphQLError: Syntax Error: Expected Name, found Int "1234567890123456789"

Can anyone explain this?

1 Answer 1

1

Using string interpolation like that will result in the following value being inserted inside your string:

"1234567890123456789,1234567890123456790"

This is not valid GraphQL syntax and so results in a syntax error. Instead of using string interpolation, you should use GraphQL variables to provide dynamic values along with your query:

query ($idArr: [ID!]!) {
  queryName(where: { ids: $idArr }, offset: 0, max: 10) {
    ...
  }
}

Note that the type of the variable will depend on the argument where it's being used, which depends on whatever schema you're actually querying.

How you include the variables along with your request depends on the client you're using to make that request, which is not clear from your post. If you're using fetch or some other simple HTTP client, you just include the variables alongside the query as another property in the payload you send to the server:

{
  "query": "...",
  "variables": {
    ...
  }
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.