如何在graphql中获取所有枚举值
Posted
技术标签:
【中文标题】如何在graphql中获取所有枚举值【英文标题】:How to get all Enum values in graphql 【发布时间】:2020-01-12 13:23:45 【问题描述】:如何在graphql中检索枚举类型的所有值?
例子:
enum TRUCKPE_NAME
TATA_407
TATA_709
TATA_1106
ECHIER_1103
type Document
truckType: TRUCKPE_NAME
我想获取上面枚举中的所有名称。像
console.log(prisma.Documents().truckType())
// output
TATA_407
TATA_709
TATA_1106
ECHIER_1103
【问题讨论】:
我通过基于 Typescript 的库做了类似的事情。不确定它是否适用于 GraphQL。随意适应。export enum JobStatusGroup Running,Success,Failure,Pending,Paused,Other export interface Dictionary key:string, value:number export function getKVPairsOfJobStatusGroups(): Dictionary[] let result:Dictionary[] = [] as Dictionary[];for (let enumMember in JobStatusGroup) let isValueProperty = parseInt(enumMember, 10) >= 0;if (isValueProperty) let d:Dictionary=key: JobStatusGroup[enumMember].toString(),value: parseInt(enumMember, 10),result.push(d);return result;
难道你不需要在 之前加上一个 = 并用逗号分隔枚举条目吗?
【参考方案1】:
您可以运行introspection 查询:
const data: __type: enumValues = await prisma.request(`
__type(name: "TRUCKPE_NAME")
enumValues
name
`)
const values = enumValues.map(( name ) => name)
【讨论】:
【参考方案2】: query
__type(name:"GenderEnum")
name
enumValues
name
学分和更多详细信息: https://medium.com/novvum/how-to-query-enums-with-graphql-using-introspection-daa048014700
【讨论】:
以上是关于如何在graphql中获取所有枚举值的主要内容,如果未能解决你的问题,请参考以下文章
如何在 apollo graphQL 服务器的枚举值中添加特殊字符?