首页 > 解决方案 > Graphql 输入强制属性

问题描述

是否有可能创建带有强制输入或其他输入的 GraphQL 输入。

例如 :

input ClientInput
{
    name: String!
    token: String!
    email: String!
}

我想要其中一个属性token或者email是强制性的。如果提供其中之一,则另一个成为可选。

是否可以 ?如果没有,是否有一种“解决方法”?

标签: validationgraphql

解决方案


不,这是不可能的。一种解决方法是将这两个字段设置为 aptional,然后进行手动验证,在此您可以返回自定义错误。另一种方法是将字段组合成类似

input ClientInput
{
    name: String!
    tokenOrEmail: String!
}

通过这样做,您可以使该字段成为必填字段,然后进行一些解析以确定提供的值是令牌还是电子邮件更好的方法是添加另一个字段来提供 authMethod,如下所示:

input ClientInput
{
    name: String!
    authData: String!
    authMethod: AuthMethod!
}
enum AuthMethod {
  EMAIL
  TOKEN
}

推荐阅读