如何在 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!
}