Logo

功能:

'oneOf' Input Object

'oneOf' Input Object

oneOf input object 是一种特殊类型的 input object,其中必须且只能提供一个输入字段,否则服务器将返回验证错误。这种行为为 GraphQL 的输入引入了多态性,使我们能够设计更简洁的 schema。

例如,在应用程序中检索用户可以通过不同的属性来实现,例如用户 ID 或电子邮件。为此,我们通常需要为每个属性分别创建一个字段:

type Query {
  userByID(id: ID!): User
  userByEmail(email: String!): User
}

借助 oneOf input object,我们可以改为使用单个字段 user,通过 UserByInput oneOf input object 接受所有属性,并且明确只能且必须提供其中一个属性(ID 或电子邮件):

type Query {
  user(by: UserByInput!): User
}
 
input UserByInput @oneOf {
  id: ID
  email: String
}

在 query 中,我们为属性中的某一个提供输入值:

{
  tom: user(by: {
    id: 1
  }) {
    name
  }
 
  jerry: user(by: {
    email: "jerry@warnerbros.com"
  }) {
    name
  }
}

订阅我们的新闻通讯

及时了解 Gato GraphQL 的所有更新。