如何处理GraphQL中的嵌套输入

时间:2018-09-02 17:54:05

标签: graphql graphql-js

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

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

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

1 个答案:

答案 0 :(得分:3)

在您的突变中嵌套输入是什么意思? GraphQL输入类型没有解析器。使用解析器,您只需确定如何获取结果。如果您想嵌套输入,例如,我想同时与company创建用户。然后,我将在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。我可以应用事务,因为我将创建两个新记录,等等。如果您要表达其他含义,请不确定它是否是嵌套输入的含义。让我知道:)