首页 > 解决方案 > 在 GraphQL typedDefs 中使用联合类型

问题描述

我正在输入我的typedDefsand 对于一个属性,它可以返回StringBoolean

const typeDefs = `
    type Analysis {
    id: String
    analysisName: String
    creator: String
    description: String
    datesValid: String 
}
`

我想datesValid成为StringBoolean。我试过了:

const typeDefs = `
    ...
    datesValid: boolString 
}

union boolString = String | Boolean
`

但这会500在尝试通过 GraphiQL 查询时导致内部服务器错误。

我的最终目标是将其键入为String | Boolean

标签: graphqlapollo

解决方案


根据 GraphQL 规范,类型联合只能从对象类型创建。这意味着你想做的事情是不可能的。

我相信有不同的方法可以解决您的问题。也许可以为空的日期类型正在解决您的问题?或者一个可以有多个值的枚举(例如VALID, INVALID, PENDING)?在极端情况下,您拥有的标量类型可以达到目的。

通常,规范中的这些限制也是为了帮助人们构建一致且易于使用的 API。


推荐阅读