Reputation: 1465
I have this input type and I would like to add a default Value to one of the fields. I want to add 0 to the value field inside the ExampleInput.
type ExampleType {
value: Int
another: String
}
type Mutation {
example(input: ExampleInput): ExampleType
}
input ExampleInput {
value: Int
another: String
}
Any ideas?
Upvotes: 83
Views: 95461
Reputation: 1276
In a programmatic/object-based (or code-first) approach, you can set a default value like this for the InputObjectType:
const exampleInput = new GraphQLInputObjectType({
name: "ExampleInput",
fields: () => ({
value: { type: graphql.GraphQLInt, defaultValue: 0 },
another: { type: new GraphQLNonNull(graphql.GraphQLString) },
isAvailable: { type: graphql.GraphQLBoolean, defaultValue: false },
}),
});
by using defaultValue
keyword.
Upvotes: 1
Reputation: 158927
It looks like the grammar allows default values on input object types, so you can declare
input ExampleInput {
value: Int = 0
another: String
isAvailable: Boolean = false
}
The spec is clear that default values exist and explains how they get used (first bullet under "Input Coercion").
(Whether any specific tooling supports this is probably variable: graphql.org had an informal version of the IDL for quite a while before it was actually in the spec, and I have the impression some libraries haven't caught up to the released spec yet.)
Upvotes: 121