将输入类型用于graphql查询是一种不好的做法吗?

时间:2019-04-10 20:06:24

标签: graphql

我已经看到,建议在突变的情况下插入输入类型,但不说明查询内容。

例如,在learn tutorial中,只需说:

  

这在突变的情况下特别有价值,在这种情况下,您可能希望传递要创建的整个对象

我有这个查询:

type query {
    person(personID: ID!): Person
    brazilianPerson(rg: ID!): BrazilizanPerson
    foreignerPerson(passport: ID!): ForeignerPerson
}

我不能仅仅因为字段的名称(rg,password)而具有不同的类型,或者要在查询中添加诸如type之类的另外一个参数,我不能只将Person与documentNr字段一起使用来做这样的输入类型?

input PersonInput {
   documentNr : ID!
   type: PersonType # this type is Foreign or Brazilian and with this I k 
}

PersonType是一个枚举,我和他一起知道该文件是rg还是护照。

1 个答案:

答案 0 :(得分:1)

不,您的方法没有错误。 GraphQL规范允许 any 字段具有参数,并允许任何参数接受输入对象类型,而不管其操作如何。实际上,查询和突变之间的区别是largely symbolic

值得指出的是,任何字段都可以接受参数-不仅仅是根级别的参数。因此,如果适合您的需求,则可以轻松设置一个架构,以允许执行以下查询:

query {
  person(id: 1) {
    powers(onlyMutant: true) {
      name
    }
  }
}