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 类型示例包括:
CustomPostEnumStringTagTaxonomyEnumStringCategoryTaxonomyEnumStringMenuLocationEnumString
内省:查询「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
}
}
}
}Next