对 ObjectType 和 InputObjectType 使用相同的对象
Using the same object for ObjectType and InputObjectType
我有一个这样定义的模型对象:
case class OrganizationId(value: Long) extends AnyVal with TypedId
case class OrganizationFields(name: String, iban: Option[String], bic: Option[String])
case class Organization(
id: OrganizationId, addressId: AddressId, updatedAt: LocalDateTime, insertedAt: LocalDateTime, fields: OrganizationFields
)
这是我在桑格利亚汽酒模式定义中尝试做的事情:
implicit val OrganizationFields = deriveObjectType[GraphqlContext, OrganizationFields]()
implicit val OrganizationType: ObjectType[GraphqlContext, Organization] = deriveObjectType[GraphqlContext, Organization]()
implicit val OrganizationInputType = deriveInputObjectType[OrganizationFields]()
我需要将 OrganizationFields
定义为 ObjectType
以便能够在我的 graphql 查询中使用 Organization
以及定义为 ObjectInputType
以便能够使用它在我的 graphql 突变中作为输入。
问题是我在 运行 时间收到以下异常:
Type name 'OrganizationFields' is used for several conflicting GraphQL type kinds: ObjectType, InputObjectType. Conflict found in an argument 'organization' defined in field 'createOrganization' of 'Mutation' type
有什么办法让它起作用吗?
在您的示例中,两种 GraphQL 类型将具有相同的名称。这是不允许的,因为 GraphQL 模式中的所有类型都共享相同的全局命名空间。
您可以重命名其中一种类型以解决此问题。例如:
implicit val OrganizationInputType = deriveInputObjectType[OrganizationFields](
InputObjectTypeName("OrganizationFieldsInput"))
我有一个这样定义的模型对象:
case class OrganizationId(value: Long) extends AnyVal with TypedId
case class OrganizationFields(name: String, iban: Option[String], bic: Option[String])
case class Organization(
id: OrganizationId, addressId: AddressId, updatedAt: LocalDateTime, insertedAt: LocalDateTime, fields: OrganizationFields
)
这是我在桑格利亚汽酒模式定义中尝试做的事情:
implicit val OrganizationFields = deriveObjectType[GraphqlContext, OrganizationFields]()
implicit val OrganizationType: ObjectType[GraphqlContext, Organization] = deriveObjectType[GraphqlContext, Organization]()
implicit val OrganizationInputType = deriveInputObjectType[OrganizationFields]()
我需要将 OrganizationFields
定义为 ObjectType
以便能够在我的 graphql 查询中使用 Organization
以及定义为 ObjectInputType
以便能够使用它在我的 graphql 突变中作为输入。
问题是我在 运行 时间收到以下异常:
Type name 'OrganizationFields' is used for several conflicting GraphQL type kinds: ObjectType, InputObjectType. Conflict found in an argument 'organization' defined in field 'createOrganization' of 'Mutation' type
有什么办法让它起作用吗?
在您的示例中,两种 GraphQL 类型将具有相同的名称。这是不允许的,因为 GraphQL 模式中的所有类型都共享相同的全局命名空间。
您可以重命名其中一种类型以解决此问题。例如:
implicit val OrganizationInputType = deriveInputObjectType[OrganizationFields](
InputObjectTypeName("OrganizationFieldsInput"))