【问题标题】:How to deal with nested input in GraphQL如何处理 GraphQL 中的嵌套输入
【发布时间】:2019-02-07 21:57:23
【问题描述】:

在编写查询时,我可以在任何字段上定义解析器,并且该字段的值将由其解析器确定,而与查询深度无关。

但是,在编写突变时,我似乎只能在根级别定义解析器。向我的 args 或输入类型中的字段添加解析方法似乎没有任何影响。

在突变中处理嵌套输入的最佳方法是什么?

【问题讨论】:

    标签: graphql graphql-js


    【解决方案1】:

    突变中的嵌套输入是什么意思? GraphQL 输入类型没有解析器。使用解析器,您只是在确定如何获取结果。如果您想要嵌套输入,例如例如,我也想与公司一起创建用户。然后我将在 SDL 中定义 CreateUserInput CreateCompanyInput 类型,例如这样

    input CreateCompanyInput {
       name: String!
       type: CompanyEnum!
    }
    
    input CreateUserInput { 
      username: String!
      firstname: String!
      lastname: String!
      company: CreateCompanyInput!
    }
    
    type Mutation {
      createUser(input: CreateUserInput!): User
    }
    

    这样我基本上是嵌套参数并且可以实现更复杂的突变。此外,如果我需要突变,我可以将CreateCompanyInput 重复用于createCompany 突变。然后,即使在 createUser 解析器中使用 CreateCompanyInput 作为输入参数,我也会拥有整个 CreateUserInput。我可以应用事务,因为我将创建两条新记录等。如果您的意思是其他意思,则不确定这是否是您所说的嵌套输入。请告诉我:)

    【讨论】:

    • 你用什么前端来查询这些?前端查询是什么样的?
    • 这是创建用户的示例突变。 GraphQL 请求可以如下所示:`createUserMutation($input: CreateUserInput!) { createUser(input: $input) { id, firstname, lastname } }`。对于此代码,您还需要传递相应的变量。
    • 带有mutation CreateUser { createUser(input: { ... }) }.graphql 文件会是什么样子?
    • 我认为他的意思是如何在 express-graphql 中做到这一点
    猜你喜欢
    • 2021-02-09
    • 2019-12-27
    • 2019-08-15
    • 2020-10-08
    • 2017-04-15
    • 1970-01-01
    • 2011-06-18
    • 2020-12-02
    • 1970-01-01
    相关资源
    最近更新 更多