标题几乎说明了一切:我正在构建一个 react /中继应用程序,它将允许用户在运行时动态创建图表,显示他们在指定时间范围内的各种收入流。此图表的一个特点是用户能够指定每个收入流的采样间隔(例如 YEAR
、QUARTER
、MONTH
、WEEK
等)作为每个流的参数。
这些值在架构中定义为 GraphQLInputObjectType
实例,如下所示:
enum timeSeriesIntervalEnum {
YEAR
QUARTER
MONTH
WEEK
}
在客户端,我定义了以下形式的 react-relay
片段:
fragment on BalanceSheet {
income {
# some income stream
afterTax {
values(interval: $samplingInterval)
dates(interval: $samplingInterval)
}
}
}
此变量值将作为单独组件中下拉菜单的一部分进行填充,其中下拉菜单中的每个值都应对应于有效的 timeSeriesIntervalEnum
值。
虽然可以简单地硬编码这些值,但底层 API 仍然经常更改,我想减少耦合,而是通过为给定下拉列表指定变量类型来动态填充这些字段(例如 timeSeriesIntervalEnum
),然后使用 graphql 客户端架构解析值并填充配置 json 文件(运行前)或在运行时动态分配值。
注意:我已经在开始前做了一些查询字符串和片段转译,所以如果需要的话,我不反对在这个过程中创建 json 配置文件。
最佳答案
这可以使用 introspection query 来完成.
对于您的情况,这是一种可能的解决方案:
{
__type(name: "timeSeriesIntervalEnum") {
name
enumValues {
name
}
}
}
响应包含所有可能类型的列表:
{
"data": {
"__type": {
"name": "timeSeriesIntervalEnum",
"enumValues": [
{
"name": "YEAR"
},
{
"name": "QUARTER"
},
{
"name": "MONTH"
},
{
"name": "WEEK"
}
]
}
}
}
关于javascript - 给定一组 GraphQL 变量类型,是否可以使用客户端模式为集合中的每种类型创建所有有效值的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41840798/