Schema 扩充
Schema 扩充'Enum String'类型

'Enum String'类型

某些信息只能取预定义集合中的值,理想情况下应使用 Enum 类型来建模。然而,enum 类型有一个限制:其值不能包含 "-" 字符,而在某些情况下这是无法避免的。

例如,拥有一个 CustomPostEnum enum 类型来列举所有可查询的自定义文章类型(即已在站点中注册并被允许查询的类型)是很有意义的。但是,自定义文章类型的名称中可能包含 "-" 字符,如下面的 "some-custom-cpt" 示例所示:

{
  customPosts(
    filter: {
      customPostTypes: ["post", "product", "some-custom-cpt"]
    }
  ) {
    # ...
  }
}

由于此限制,该类型无法作为 enum 类型。取而代之,Gato GraphQL 将其实现为自定义的「Enum String」类型,即一种只能接收预定义集合中的值的 String 类型,类似于 Enum

GraphQL schema 中实现的 EnumString 类型示例包括:

  • CustomPostEnumString
  • TagTaxonomyEnumString
  • CategoryTaxonomyEnumString
  • MenuLocationEnumString

内省:查询「Enum String」类型的可用值

我们可以通过内省获取每个 EnumString 类型所接受的值列表:

query EnumStringTypePossibleValues {
  __schema {
    types {
      name
      extensions {
        # This will print the enum-like "possible values" for EnumString type resolvers, or `null` otherwise
        possibleValues
      }
    }
  }
}