GraphQL object property should be a list of strings

10,607

I figured out the answer. The key is to pass the graphql.GraphQLString into graphql.GraphQLList()

The schema becomes:

var ColorType = new graphql.GraphQLObjectType({
  name: 'colors',
  fields: function() {
    return {
      name: { type: graphql.GraphQLString },
      keys: { type: new graphql.GraphQLList(graphql.GraphQLString)
    };
  }
});

Using this query:

query { colors { name, keys } }

I get the desired results:

{
  name: "colors",
  keys: ["red", "blue"]
}
Share:
10,607
Mdd
Author by

Mdd

Updated on July 29, 2022

Comments

  • Mdd
    Mdd almost 2 years

    How do I make a schema for an object property that is an array of strings in GraphQL? I want the response to look like this:

    {
      name: "colors",
      keys: ["red", "blue"]
    }
    

    Here is my Schema

    var keysType = new graphql.GraphQLObjectType({
      name: 'keys',
      fields: function() {
        key: { type: graphql.GraphQLString }
      }
    });
    
    var ColorType = new graphql.GraphQLObjectType({
      name: 'colors',
      fields: function() {
        return {
          name: { type: graphql.GraphQLString },
          keys: { type: new graphql.GraphQLList(keysType)
        };
      }
    });
    

    When I run this query I get an error and no data, the error is just [{}]

    query { colors { name, keys } }

    However when I run a query to return just the name I get a successful response.

    query { colors { name } }

    How do I create a schema that returns an array of strings for when I query for keys?

  • davnicwil
    davnicwil almost 7 years
    Awesome, thanks for taking the time to write your solution up. Saved me a bunch of time!
  • Germa Vinsmoke
    Germa Vinsmoke over 4 years
    @davnicwil Exactly!