graphql的多个内置类型

时间:2017-07-07 14:09:05

标签: node.js types graphql graphql-js

如何为graphql创建多种类型?我有这个代码:

status: {
  type: GraphQLString || GraphQLBoolean,
  resolver: Blahblah
}

显然这不起作用因为它将布尔值转换为字符串,我想支持布尔值和字符串。

我不能只是让它们成为字符串并调整代码,因为其他项目正在使用它们,并且在我可以联系其他开发人员之后需要一段时间,而且我们的数据库中有错误的数据。

提前致谢。

1 个答案:

答案 0 :(得分:1)

GraphQL是关于特异性的。在规范中故意存在很小的模糊性,即使它消除了方便的快捷方式,我认为这里的问题的一个解决方案可能是一个Union类型,你可以定义一个类型,它是其他类型的联合,所以例如< / p>

type StringType {
  fieldName: String
}

type BooleanType {
  fieldName: Boolean
}

union StringBool = StringType | BooleanType

myQuery(someArg: String!): StringBool

请记住,这只是一种可接受的类型,作为查询的返回值。它不是可接受的突变输入类型。当您指定要从查询返回的字段时,您将必须对不同类型进行“分段”,并解释您希望从联合的每个可能成员返回哪些字段:

... on StringType {
  fieldName
}
... on BooleanType {
  fieldName
}