石墨烯突变返回 400 - 不会正确传递 id 字段

     2023-03-08     63

关键词:

【中文标题】石墨烯突变返回 400 - 不会正确传递 id 字段【英文标题】:graphene mutation returns 400 - won't pass id field properly 【发布时间】:2020-02-09 22:34:28 【问题描述】:

我一直在 django 中使用带有 graphql 和 React 前端的石墨烯。

我可以让创建突变工作,但编辑不会 - 即使没有 $ 变量的查询在 graphiQL 中工作

我在 React 中的 gql const 是:

export const EDIT_PERSON = gql`
  mutation personEdit($id: id, $input: PersonInputType!) 
    personEdit(id: id, input: $input) 
      person 
        id
      
    
  
`;

id 是从处理程序中设置的,表单中的提交函数如下所示:

<form
          autoComplete="off"
          onSubmit=e => 
            e.preventDefault();
            editPerson(
              variables: 
                id: id,
                input: 
                  firstName: firstName,
                  lastName: lastName,
                  address: address
                
              
            );
          
        >

我在 django 中的 PersonEdit 突变看起来像:

class PersonEdit(Mutation):
    class Arguments:
        id = ID(required=True)
        input = PersonEditInputType(required=True)
    person = Field(PersonType)

    @classmethod
    def mutate(cls, root, info, **data):
        serializer = PersonSerializer(data=data.get('input'))
        serializer.is_valid(raise_exception=True)
        person = Person.objects.get(id=data.get('id'))
        print("PERSON", serializer.data)
        person.first_name = serializer.data['first_name']
        person.last_name = serializer.data['last_name']
        person.address = serializer.data['address']
        return PersonEdit(person=person.save())

为什么编辑不起作用?

【问题讨论】:

400 表示查询格式错误或验证失败。在浏览器的 DevTools 的“网络”选项卡中检查您从服务器获得的实际响应,以了解有关请求问题的详细信息。 是的,但为什么呢?这是因为第 4 个 id 前面没有 $ 【参考方案1】:

你的变异应该是这样的

export const EDIT_PERSON = gql`
  mutation personEdit($id: ID!, $input: PersonInputType!) 
  personEdit(id: $id, input: $input) 
    person 
      id
    
   
 
`;

这里应该是id: $id 而不是id: id

【讨论】:

是否有可能将对象数组(json)作为突变的输入字段传递?石墨烯-蟒蛇

...否有可能将对象数组(json)作为突变的输入字段传递?石墨烯-蟒蛇【英文标题】:istherepossiblechancetopassarrayofobjects(json)asinputfieldformutation?graphene-python【发布时间】:2018-06-1317:38:19【问题描述】:我正在尝试将json字段作为我的grap... 查看详情

以列表为输入的石墨烯突变

】以列表为输入的石墨烯突变【英文标题】:Graphenemutationwithlistasinput【发布时间】:2020-09-0720:42:30【问题描述】:我有一个这样的石墨烯突变:classUser(ObjectType):username=String()classImportUsers(Mutation):classArguments:users=List(User)Output=List(U... 查看详情

石墨烯的通用创建模型突变

】石墨烯的通用创建模型突变【英文标题】:GenericCreateModelMutationforGraphene【发布时间】:2020-04-0909:39:23【问题描述】:我正在尝试在石墨烯中为烧瓶应用程序创建某种通用的创建突变。为了创建一个突变,语法通常如下:classCre... 查看详情

具有多 InputObjectType 的石墨烯突变

】具有多InputObjectType的石墨烯突变【英文标题】:GraphenemutationwithmultiInputObjectType【发布时间】:2022-01-1715:28:37【问题描述】:我正在尝试将graphql服务器从@nestjs/graphql转换为pythongraphene。是否可以像这样在graphene中创建mutation类,... 查看详情

石墨烯突变未映射 SQLAlchemy 中的模型

】石墨烯突变未映射SQLAlchemy中的模型【英文标题】:GraphenemutationnotmappingModelsinSQLAlchemy【发布时间】:2017-08-2514:41:09【问题描述】:我正在尝试对使用SQLALCHEMY声明的用户模型执行突变。这是我的models.py文件的代码#blog/models.pyfroms... 查看详情

石墨烯突变教程不起作用

】石墨烯突变教程不起作用【英文标题】:GrapheneMutationTultorialnotworking【发布时间】:2018-12-0617:48:06【问题描述】:我已经开始学习GraphQL一周了,我最大的挑战是处理发布数据。我读过这都是关于突变的,但是我做的不对。我只... 查看详情

具有外键关系的对象的石墨烯中的 GraphQL 突变

】具有外键关系的对象的石墨烯中的GraphQL突变【英文标题】:GraphQLMutationinGrapheneforObjectwithForeignKeyRelation【发布时间】:2020-07-0305:24:59【问题描述】:我正在使用Python、GraphQL(graphene-django)和Django构建一个简单的CRUD接口。包含与... 查看详情

GraphQL 和石墨烯

】GraphQL和石墨烯【英文标题】:GraphQLandGraphene【发布时间】:2017-05-1118:03:51【问题描述】:我有一个具有一对多关系的数据库模式。例如一个部门有很多客户。是否有可能有一个突变来创建一个客户和一个部门并将它们关联起... 查看详情

如何在石墨烯中将函数作为查询结果返回?

】如何在石墨烯中将函数作为查询结果返回?【英文标题】:Howtoreturnafunctionasaqueryresultingraphene?【发布时间】:2020-11-3021:33:16【问题描述】:我有一个帖子模型,我想知道当前登录的用户是否喜欢该帖子:这样的事情会起作用吗... 查看详情

如何在石墨烯中返回字典列表?

】如何在石墨烯中返回字典列表?【英文标题】:howtoreturnalistofdictionaryingraphene?【发布时间】:2020-11-2514:13:07【问题描述】:我是graphql的新手,正在处理一些作为字典列表返回的数据集。sn-p代码:classPlayer(ObjectType):username=String(... 查看详情

如何覆盖石墨烯中的 DjangoModelFormMutation 字段类型?

】如何覆盖石墨烯中的DjangoModelFormMutation字段类型?【英文标题】:HowcanIoverrideaDjangoModelFormMutationfieldtypeingraphene?【发布时间】:2019-08-0808:00:18【问题描述】:我正在构建一个简单的配方存储应用程序,该应用程序将Graphene包用于... 查看详情

使用石墨烯在 Graphql 中返回字典而不是字符串

】使用石墨烯在Graphql中返回字典而不是字符串【英文标题】:ReturndictionaryinstedofstringinGraphqlusinggraphene【发布时间】:2020-03-2318:20:52【问题描述】:我希望我的graphql查询以字典的形式返回多个值,但我只能在字符串中返回字典。... 查看详情

返回 Django 石墨烯订阅中订阅事件的初始数据

】返回Django石墨烯订阅中订阅事件的初始数据【英文标题】:Returninitialdataonsubscribeeventindjangographenesubscriptions【发布时间】:2020-02-1523:49:06【问题描述】:我正在尝试在订阅时回复用户。例如,在聊天室中,当用户连接到订阅时... 查看详情

GraphQL + 中继 + 石墨烯

】GraphQL+中继+石墨烯【英文标题】:GraphQL+Relay+Graphene【发布时间】:2017-05-1306:41:36【问题描述】:classProduct(SQLAlchemyObjectType):classMeta:model=ProductModelinterfaces=(relay.Node,)@classmethoddefget_node(cls,id,context,info):#mustimpleme 查看详情

eos石墨烯介绍

...数据结构都是一棵树(考虑有分叉的情况),石墨烯的区块链也不例外,一个区块中包含上一个区块的id,每个区块的id为区块内容的MAC。block由blockheader和transactionlist构成。1.1blockheaderprevious:前一个块的idblock_nu... 查看详情

在突变中传递链接数组 [graphene/python/graphql]

...ql]【发布时间】:2021-06-3013:28:54【问题描述】:我对使用石墨烯有点困惑。我在https://www.howtographql.com/graphql-python/3-mutations/上使用突变示例,但这里仅显示如何创建ONE链接的 查看详情

如何允许石墨烯GraphQl中的任何字段过滤

】如何允许石墨烯GraphQl中的任何字段过滤【英文标题】:HowtoallowanyfieldfilteringingrapheneGraphQl【发布时间】:2021-10-2909:03:55【问题描述】:我想知道,是否有办法在石墨烯GraphQl解析器中传递更多要查询的参数。因此,此代码仅适... 查看详情

聚合石墨烯/django 查询中的字段

】聚合石墨烯/django查询中的字段【英文标题】:Aggregatingfieldsingraphene/djangoqueries【发布时间】:2020-08-1114:15:49【问题描述】:我正在编写一个石墨烯/djangoORM查询,我需要在我的所有查询结果对象上聚合特定字段的值并将其与查... 查看详情