Invalid Type for Union Error#
Description#
This error is thrown when trying to create an union with one or more type that’s are allowed in unions, for example the following code will throw this error:
import strawberry
@strawberry.type
class Example:
name: str
ExampleUnion = strawberry.union("ExampleUnion", types=(Example, int))
@strawberry.type
class Query:
field: ExampleUnion
schema = strawberry.Schema(query=Query)
This happens because GraphQL doesn’t support scalars as union members.
How to fix this error#
Since GraphQL doesn’t allow scalars as union members, a workaround is to create
a wrapper type that contains the scalar value and use that instead. For example
the following code will create a union type between Example
and IntWrapper
which is a wrapper on top of the int
scalar:
import strawberry
@strawberry.type
class Example:
name: str
@strawberry.type
class IntWrapper:
value: int
ExampleUnion = strawberry.union("ExampleUnion", types=(Example, IntWrapper))
@strawberry.type
class Query:
field: ExampleUnion
schema = strawberry.Schema(query=Query)