如何在 GraphQl JS 中实现带有破折号的枚举

Posted

技术标签:

【中文标题】如何在 GraphQl JS 中实现带有破折号的枚举【英文标题】:How can I implement enums with dashes in GraphQl JS 【发布时间】:2021-10-11 17:27:24 【问题描述】:

GraphQL 枚举 can not use dashes(并且只允许下划线)。

继续,我有破折号的枚举。它们已经存在,我不会改变它们;它会在我无法轻松检查的地方引入错误。

那么,这些如何在 GraphQL 中表示?

是否可以制作一个符合 GraphQL 标准的“假”枚举,然后将其转换为真实值?

还是我只需要制作自己的 Scalar 并放弃 GraphIQL 建议?

【问题讨论】:

【参考方案1】:

我找到了解决方案。满容易;我很惊讶我发现的线程或其他问题都没有说:

const values: GraphQLEnumValueConfigMap = ;

["enum-1", "enum-2"].forEach((value) => 
  const gqlName = String(value).replace(/\-/g, "_");
  values[gqlName] =  value 
);

const gqlEnum = new GraphQLEnumType("my_enum_name", values);

GraphQLEnumValueConfigMap 中的每个 GraphQLEnumValueConfig 都可以将属性 value: any 设置为它们的值。

根据您的枚举,您可能需要更改 gqlName 生成方式的逻辑。

【讨论】:

以上是关于如何在 GraphQl JS 中实现带有破折号的枚举的主要内容,如果未能解决你的问题,请参考以下文章

如何在 GraphQL HotChocolate 中实现订阅?

如何在express中实现resolveType函数/初始化graphQL服务器

如何使用 React-Hooks 和 Apollo Client 在 React-GraphQL 中实现搜索功能?

是否可以在 GraphQL 中实现多个接口?

在 Laravel/Lighthouse GraphQL API 中实现搜索功能

无法在 GraphQL 中实现联合