如何处理 GraphQL 中的嵌套输入
Posted
技术标签:
【中文标题】如何处理 GraphQL 中的嵌套输入【英文标题】:How to deal with nested input in GraphQL 【发布时间】:2019-02-07 21:57:23 【问题描述】:在编写查询时,我可以在任何字段上定义解析器,并且该字段的值将由其解析器确定,而与查询深度无关。
但是,在编写突变时,我似乎只能在根级别定义解析器。向我的 args 或输入类型中的字段添加解析方法似乎没有任何影响。
在突变中处理嵌套输入的最佳方法是什么?
【问题讨论】:
【参考方案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 中做到这一点以上是关于如何处理 GraphQL 中的嵌套输入的主要内容,如果未能解决你的问题,请参考以下文章
如何处理 Vue.JS 中的 Apollo Graphql 查询错误?