gatsby-source-github-api icon indicating copy to clipboard operation
gatsby-source-github-api copied to clipboard

Cannot use variables in certain queries

Open RyanCross opened this issue 4 years ago • 2 comments

Hello! This might just be me being obtuse, but I cannot get the following query to work with variables

Here is my config object with the query

{
      resolve: `gatsby-source-github-api`,
      options: {
        token: process.env.GITHUB_ACCESS_TOKEN,
        graphQLQuery: `
        {
          search(type: REPOSITORY, query: "user:$userName topic:$topicName", last: 50) {
            repos: edges {
              repo: node {
                ... on Repository {
                  url
                  openGraphImageUrl
                  name
                  description
                }
              }
            }
          }
          user(login: $userName) { 
            pinnedItems(first: 10) {
              nodes {
                ... on Repository {
                  id
                  name
                  description
                  watchers {
                    totalCount
                  }
                  languages(first: 2) {
                    nodes {
                      color
                      name
                    }
                  }
                }
              }
            }
          }
        }        
          `,
        variables: {
          userName: "RyanCross",
          topicName: "game-jam"
        }
      }
    }

The first part of the query works just fine (tested on its own), but this second piece fails user(login: $userName) {

I believe this has to do with the surrounding quotes, if I replace it with the original value "RyanCross" the query executes fine.

Tried wrapping the variable with quotes in the template string and tried something like:

{ 
variables: {
          userName: "RyanCross",
          userName2: "\"RyanCross\""
        
}

Query still failed on build though :(. Any ideas?

RyanCross avatar Oct 27 '21 14:10 RyanCross

Your query is malformed, and doesn't work in the Explorer.

You are missing this on the first line: query($userName:String!){

reference: https://github.com/graphql/graphiql/issues/156#issuecomment-236762354

query($userName:String!){
          search(type: REPOSITORY, query: "user:$userName topic:$topicName", last: 50) {
            repos: edges {
              repo: node {
                ... on Repository {
                  url
                  openGraphImageUrl
                  name
                  description
                }
              }
            }
          }
      
          user(login: $userName) { 
            pinnedItems(first: 10) {
              nodes {
                ... on Repository {
                  id
                  name
                  description
                  watchers {
                    totalCount
                  }
                  languages(first: 2) {
                    nodes {
                      color
                      name
                    }
                  }
                }
              }
            }
          }
        
}       

I'm not 100% sure if this fixes your problem, but I hope it helps!

ldd avatar Oct 30 '21 03:10 ldd

@RyanCross did my suggestion work? I sure hope so. I'll close this issue in about ~3 months if I don't hear back from you or anyone else, as I believe it was an issue of how to format the query rather than an actual issue with the plugin

(see my previous answer for more info)

ldd avatar Nov 13 '21 00:11 ldd