【问题标题】:GraphQL variable combination validationGraphQL 变量组合验证
【发布时间】:2021-05-20 04:51:21
【问题描述】:

想象一下以下(简化的)GraphQL 模式:

type User {
  username: String
  email: String
}

type Query {
  user(username: String, email: String): User
}

如果我只想通过提供username 来允许查询user,我当然会将其更改为user(username: String!),使username 需要使用感叹号。电子邮件也一样。

是否有可能有一个 GraphQL 原生 解决方案,在其中我验证两个输入参数中是否存在一个(逻辑 XOR)或至少一个(逻辑 OR)?
当然,我可以在查询解析器中手动执行此操作,但是像在 Apollo GraphQL 中使用的 @constraint 指令在跨变量传播时会很好。

【问题讨论】:

    标签: graphql apollo-server


    【解决方案1】:

    直接...不可能

    • 在解析器上检查字段是否存在 [在 args 内];
    • 使用@constraint检查每个字段形状;

    间接

    • 你可以尝试使用union的输入类型:

    .

    type UserNameInput {
      username: String!
    }
    type UserEmailInput {
      email: String!
    }
    type UserInput = UserNameInput | UserEmailInput
    
    type Query {
      user(input: UserInput): User
    }
    

    【讨论】:

      猜你喜欢
      • 2021-09-01
      • 2020-10-21
      • 2016-10-18
      • 2019-03-01
      • 2018-08-23
      • 2020-01-18
      • 2020-07-05
      • 2021-08-14
      • 2020-10-21
      相关资源
      最近更新 更多