简体   繁体   中英

GraphQL object property should be a list of strings

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?

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"]
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM