GraphQL返回两种可选类型

时间:2016-11-02 14:05:33

标签: javascript graphql

我需要返回一个字符串或一个布尔值???任何想法?

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

2 个答案:

答案 0 :(得分:1)

您可以查看自定义类型:http://graphql.org/graphql-js/type/#example-1。这允许您根据API用例创建自定义类型。我会这样做,这就像一个&#34;代码气味&#34;可能需要设计并进一步审查。

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;
}

您必须检查这一点是否正确,但应该有效

答案 1 :(得分:0)

您可以使用联盟:

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

但正如griffith_joel所建议的那样 - 仔细观察你试图通过超载那一个领域而做的事情,并考虑它是否会更好地作为两个不同的领域。不知道你的意图,但也许是非空的&#34;成功&#34;字段和可选的&#34;用户名&#34;字段。