在 Graphql 中共享枚举

Share enum in Graphql

刚开始学习 GraphQL,我想分享一个我在 express apollo 服务器中导出的枚举。

./src/shared/fruitsEnum.ts

export enum fruitsEnum{
    APPLE,
    ORANGE
}

导入枚举

./src/market/fruits.ts

import { fruitsEnum } from "./src/shared/fruitsEnum.ts"

export const typeDef = `
    type Fruit{
        id: ID
        fruitName: fruitsEnum
    }

    type Query{
    ...
    }
`

我尝试这样做,但我得到 Error: Unknown type fruitsEnum。我将枚举放在单独位置的原因是因为相同的枚举可能用于其他模式。我的目标是拥有一个可共享的枚举类型。

Typescript 枚举 != graphQL 枚举

Enum 需要在 graphQL 'context' 中定义为 docs,因此它将以这种方式工作:

export const typeDef = `

  enum fruitsEnum{
    APPLE,
    ORANGE
  }

  type Fruit{
    id: ID
    fruitName: fruitsEnum
  }

  type Query{
  ...
  }

您可以使用 type-graphql 到 'connect' 它们(typescript 和 graphql 上下文)和(在客户端和服务器之间共享) 无需显式 [typescript 已定义] 枚举定义里面 typDef.

更多信息here