【问题标题】:GraphQL return two optional typesGraphQL 返回两种可选类型
【发布时间】:2016-11-04 21:39:39
【问题描述】:

我需要返回一个字符串或者一个布尔值???有什么想法吗?

login: {
    type: GraphQLString || GraphQLBoolean, //   <------ but it only take one type
    description: 'Desc',
    resolve: (root, args) => {
      // Need to return a string or a boolean
      }

【问题讨论】:

    标签: javascript graphql


    【解决方案1】:

    您可以查看自定义类型:http://graphql.org/graphql-js/type/#example-1。这允许您根据您的 API 用例创建自定义类型。我会说这样做就像是一种“代码味道”,可能需要进一步设计和审查。

    var StringOrBool = new GraphQLScalarType({
      name: 'StringOrBool',
      serialize: parseStringOrBool,
      parseValue: parseStringOrBool,
      parseLiteral(ast) => parseStringOrBool(ast.value)
    });
    
    function parseStringOrBool(value) {
      return (typeof value === 'string' || typeof value === 'boolean') ?
        value :
        null;
    }
    

    你必须检查它的正确性,但应该可以工作

    【讨论】:

      【解决方案2】:

      您可以为此使用联合:

      http://graphql.org/graphql-js/type/#graphqluniontype

      但正如 griffith_joel 所建议的那样 - 通过重载该字段来仔细查看您要做什么,并考虑将其作为两个不同的字段是否会更好。不知道您的意图,但可能是一个非空的“成功”字段和一个可选的“用户名”字段。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-24
        • 1970-01-01
        • 2022-01-24
        • 2020-02-01
        • 2021-04-13
        相关资源
        最近更新 更多