如何在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 服务器的枚举值中添加特殊字符?

NodeJs GraphQL 枚举类型值作为动态

如果它们来自数据源,如何在 graphql 模式中表示枚举?

如何在 GraphQl JS 中实现带有破折号的枚举

如何在 GraphQL 中返回枚举选项?

如何在 GraphQL 模式中定义嵌套枚举类型