在使用 GraphQL 进行开发的过程中,枚举类型经常用来定义某一特定字段的取值。使用枚举类型能够保证字段取值的正确性和规范性,避免了随意的取值带来的问题。而在 GraphQL 中,使用 Enum 类型来定义枚举值尤其方便。
Enum 类型介绍
Enum 类型是一种 GraphQL 类型,表示一组特定的静态类型,通常用于某一字段的取值范围限制。Enum 类型通过定义常量值来实现。
使用 Enum 类型定义枚举值
在 GraphQL 中,我们可以通过使用 enum
关键字来定义一个枚举类型:
enum Status { ACTIVE INACTIVE DELETED }
在上面的定义中,我们定义了一个名为 Status
的枚举类型,该类型包含了三个取值:ACTIVE
、INACTIVE
和 DELETED
。
当我们在 GraphQL 的 schema 中定义了一个字段,需要使用这个枚举类型作为该字段的类型时,我们可以简单地使用定义好的枚举类型的名称即可:
type User { id: ID! name: String! status: Status! }
上面的 schema 定义了一个 User
类型,其中有一个 status
字段,它的类型是我们刚刚定义的 Status
类型。这样一来,我们就能够对 status
字段的取值进行限制,使得它只能取到我们规定的值。
在 GraphQL resolver 中使用 Enum 类型
当我们在 resolver 函数中处理一个枚举类型的值时,通常可以直接使用类型名称来访问该类型。
例如,当我们要处理上面定义的 User
类型中的 Status
字段时,我们可以这样使用:
-- -------------------- ---- ------- ----- --------- - - ----- - ------- ------ -- - ------ ------------- - ---- --------- ------ ----- ---- ----------- ------ ------ ---- ---------- ------ ------ -------- ------ ------- - - - -
在上面的 resolver 函数中,我们使用了 Status
类型的名称来访问该类型。在函数中,我们使用了 switch
语句来根据枚举值进行不同的处理。
总结
在 GraphQL 中使用 Enum 类型来定义枚举值,可以帮助我们保证字段取值的正确性和规范性,避免了随意的取值带来的问题。使用 Enum 类型非常简单,只需要定义好枚举类型,并在 schema 定义中使用该类型即可。
同时,在 resolver 中使用枚举类型也非常方便,我们可以直接使用类型名称来访问枚举类型,并进行相应的处理。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6488398248841e98946bc6c4