graphql - GraphQLError 未知类型“XYZMutationInput”
问题描述
如何为 DRF 序列化程序创建 graphql 输入类型?
我正在使用 django rest 框架 (DRF) 序列化程序graphene-django
,并且我能够看到在中CreateThingMutationInput
定义的类型graphiql
:
mutation TestCreate($input: CreateThingMutationInput!) {
createProjectThing(input: $input) {
id
errors {
field
messages
}
}
}
但是,我无法运行:
schema = graphene.Schema(query=Query)
result = schema.execute(self.query, variables=variables)
我得到:
[GraphQLError('Unknown type "CreateThingMutationInput".',)]
具有以下内容:
class CreateThingMutation(SerializerMutation):
class Meta:
serializer_class = ThingListViewSerializer
class Mutation(graphene.ObjectType):
debug = graphene.Field(DjangoDebug, name="_debug")
create_project_thing = CreateThingMutation.Field()
我也试过:
class CreateThingMutationInput(graphene.ObjectType):
input = graphene.Field(convert_serializer_to_input_type(ThingListViewSerializer))
以及尝试定义一个:
class Input:
input = graphene.Field(convert_serializer_to_input_type(ThingListViewSerializer))
我还可以看到从graphql-codegen
in定义的类型types.d.ts
:
export type CreateThingMutationInput = {
id?: Maybe<Scalars['Int']>,
...
}
有关的:
解决方案
我忘了将mutation
kwarg 添加到:
schema = graphene.Schema(query=Query)
应该:
schema = graphene.Schema(query=Query, mutation=Mutation)
发生这种情况的另一个原因GraphQLError('Unknown type "Number".',)
是,如果查询函数收到意外参数,例如getThing
使用 aNumber
而不是a 调用ID
:
query TestQueryWontWork(id: Number="") {
getThing(id: $id)
}
query TestQueryWorks(id: ID!) {
getThing(id: $id)
}
推荐阅读
- linux - 如何创建一个多次调用自身的 bash 文件?
- java - Couchbase 的 Spring Data:使用 AND ANY ... 满足
- mysql - 像mysql一样在数据上生成直方图
- html - 将 CSS 应用于锚的类与通过父元素应用于锚
- android - 谷歌地图意图“google.navigation:q=lat,lng”导航错误,一些错误的地址而不是坐标
- php - 如何使用循环中的数字根据索引从数组中查找相关元素?
- sql-server - 如何在 T-SQL 中使用条件
- vb.net - 删除 Datagridview 中第一行的突出显示
- networking - 超过 1000 条记录的搜索的响应时间很长
- rest - 使用spring boot将数据保存到数据库