在graphql查询中使用输入类型是一种不好的做法吗?

在graphql查询中使用输入类型是一种不好的做法吗?,graphql,Graphql,我已经看到,在突变的上下文中建议插入一个输入类型,但没有说明任何关于查询的内容 例如,仅说: 这在突变的情况下尤其有用,因为您可能希望传入要创建的整个对象 我有一个疑问: type query { person(personID: ID!): Person brazilianPerson(rg: ID!): BrazilizanPerson foreignerPerson(passport: ID!): ForeignerPerson } 我不能仅仅因为字段的名称(rg

我已经看到,在突变的上下文中建议插入一个输入类型,但没有说明任何关于查询的内容

例如,仅说:

这在突变的情况下尤其有用,因为您可能希望传入要创建的整个对象

我有一个疑问:

type query {
    person(personID: ID!): Person
    brazilianPerson(rg: ID!): BrazilizanPerson
    foreignerPerson(passport: ID!): ForeignerPerson
}
我不能仅仅因为字段的名称(rg、passport)而使用不同的类型,或者在查询中添加一个类似type的参数,我不能只让
Person
带有documentNr字段,然后执行类似的输入类型

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

PersonType
是一个enum,我知道他的文件是rg还是passport

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

值得指出的是,任何字段都可以接受参数,而不仅仅是根级别的参数。因此,如果它适合您的需要,您可以轻松地设置一个允许以下查询的模式:

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