【问题标题】:How to get all Enum values in graphql如何在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;}
  • 难道你不需要在 { 之前加上一个 = 并用逗号分隔枚举条目吗?

标签: graphql graphql-js prisma


【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-15
      • 2011-01-17
      • 2015-06-12
      • 2011-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-02
      相关资源
      最近更新 更多