
功能:
'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
}
}