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