如何在 GraphQL 架构中定义嵌套枚举类型
How to define Nested enum type in GraphQL schema
我在 graphql 模式中定义了一个枚举,如下所示:
enum QueryType {
NORMAL, RANGE, REGEX, WILDCARD
}
但是WILDCARD查询,可以进一步指定为STARTSWITH、ENDSWITH和CONTAINS,
那么我们在定义Schema的时候能不能实现类似下面的东西呢
enum QueryType {
NORMAL, RANGE, REGEX, enum WILDCARD { STARTSWITH, ENDSWITH, CONTAINS}
}
或
enum QueryType {
NORMAL, RANGE, REGEX, WILDCARD: WildCardType
}
enum WildCardType { STARTSWITH, ENDSWITH, CONTAINS}
GraphQL 架构中没有此类嵌套枚举。您可以考虑使用两个单独的字段和单独的枚举对其进行建模。
enum QueryType {
NORMAL ,RANGE , REGEX , WILDCARD
}
enum WildcardType {
STARTSWITH , ENDSWITH ,CONTAINS
}
并假设对象类型调用 SearchQuery
需要包含这些信息。它的架构可能看起来像:
type SearchQuery {
queryType : QueryType!
wildcardType : WildcardType
}
wildcardType
是可选字段,仅当 queryType 为 WILDCARD
时才包含值。否则,它应该为空。
或者,您也可以考虑使用 interface 将其建模为更 'polymorphism' 的样式。喜欢的东西:
interface SearchQuery {
queryType: QueryType!
}
type WildCardQuery implements SearchQuery {
queryType: QueryType!
wildcardType : WildcardType!
}
type NonWildCardQuery implements SearchQuery{
queryType: QueryType!
}
我在 graphql 模式中定义了一个枚举,如下所示:
enum QueryType {
NORMAL, RANGE, REGEX, WILDCARD
}
但是WILDCARD查询,可以进一步指定为STARTSWITH、ENDSWITH和CONTAINS,
那么我们在定义Schema的时候能不能实现类似下面的东西呢
enum QueryType {
NORMAL, RANGE, REGEX, enum WILDCARD { STARTSWITH, ENDSWITH, CONTAINS}
}
或
enum QueryType {
NORMAL, RANGE, REGEX, WILDCARD: WildCardType
}
enum WildCardType { STARTSWITH, ENDSWITH, CONTAINS}
GraphQL 架构中没有此类嵌套枚举。您可以考虑使用两个单独的字段和单独的枚举对其进行建模。
enum QueryType {
NORMAL ,RANGE , REGEX , WILDCARD
}
enum WildcardType {
STARTSWITH , ENDSWITH ,CONTAINS
}
并假设对象类型调用 SearchQuery
需要包含这些信息。它的架构可能看起来像:
type SearchQuery {
queryType : QueryType!
wildcardType : WildcardType
}
wildcardType
是可选字段,仅当 queryType 为 WILDCARD
时才包含值。否则,它应该为空。
或者,您也可以考虑使用 interface 将其建模为更 'polymorphism' 的样式。喜欢的东西:
interface SearchQuery {
queryType: QueryType!
}
type WildCardQuery implements SearchQuery {
queryType: QueryType!
wildcardType : WildcardType!
}
type NonWildCardQuery implements SearchQuery{
queryType: QueryType!
}