如何在graphql中表示字符串枚举(字符串文字联合)?

时间:2020-05-01 21:15:36

标签: types enums graphql

我有一个简短的字符串文字列表,希望在我的GraphQl定义中表示。我尝试使用枚举,但不是用于字符串文字。

说我有一些字符串文字:

export const DanceTypeList = [
    "truffle-shuffle",
    "stanky-leg",
    "ghost-ride-the-whip",
] as const;

// equivalent to ("truffle-shuffle" | "stanky-leg" | "ghost-ride-the-whip")
export type DanceType = typeof DanceTypeList[number];  

我该怎么做才能使GraphQl类型比GraphQlString更具描述性?理想情况下,它将能够在交互式UI中自动建议。

1 个答案:

答案 0 :(得分:2)

GraphQL中没有等效的数据结构。您可以将枚举用于尝试执行的操作,但是您需要修改枚举值的名称以符合规范的naming requirements

enum DanceType {
  truffle_shuffle
  stanky_leg
  ghost_ride_the_whip
}

在大多数GraphQL实现中,每个枚举值都可以映射到一个单独的“内部”值,以便更轻松地将它们映射到内部表示形式,例如Postgres枚举。 See here了解更多详细信息。

您还可以使用custom scalar,它只允许某些值的字符串-但是,您将不会获得与使用枚举时相同的自动补全功能。

相关问题