如何在 apollo graphQL 服务器的枚举值中添加特殊字符?

Posted

技术标签:

【中文标题】如何在 apollo graphQL 服务器的枚举值中添加特殊字符?【英文标题】:How can I put special characters in an enum value in apollo graphQL server? 【发布时间】:2021-04-28 01:34:44 【问题描述】:

我在 apollo-graphQL 中的枚举类型有问题,我在 nodejs 中使用 apollo-server。 问题是我不能使用像 image/jpeg 或 svg+xml 这样的字符串。 这些值无法解析为枚举,这给了我错误。

谁能告诉我如何解决这个问题?

【问题讨论】:

【参考方案1】:

很遗憾,答案是您不能。根据 GraphQL 规范,enum is defined 为

名称,但不是 truefalsenull

这里的“Name”指的是this definition,用正则表达式定义了一个“Name”

/[_A-Za-z][_0-9A-Za-z]*/

这意味着枚举(定义为“名称值”)只能包含字母、数字或下划线,并且第一个字符不能是数字。此外,规范建议您使用“全部大写”,我将其理解为“CONSTANT_CASE”。

如果枚举确实是您想要的,按照规范的建议,您“应该”使用

enum ImageMimeTypes 
  IMAGE_APNG
  IMAGE_AVIF
  IMAGE_GIF
  IMAGE_JPEG
  IMAGE_PNG
  IMAGE_SVG_XML
  IMAGE_WEBP

虽然我个人也喜欢将我的枚举命名为单数常量大小写 - 只是这样它所代表的内容就不那么令人惊讶了 - 所以我可能会称之为 IMAGE_MIME_TYPE

【讨论】:

感谢您布置面包屑。阅读枚举规范并不是很清楚,直到您阅读规范以获取“名称”。我们在使用 GraphQL 的 Ruby 库时遇到了这个问题 - 它目前执行规范,因此我们的 javascript 层在收到以数字开头的枚举时失败。

以上是关于如何在 apollo graphQL 服务器的枚举值中添加特殊字符?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 apollo graphql 服务器中编写解析 graphql 过滤器

如何在 Apollo 中关闭 GraphQL 订阅的套接字连接

如何使用 apollo 服务器对 graphQl 中的数据进行排序?

如何调试 nuxt-apollo 服务器端 graphql 请求

如何在 GraphQL Apollo 客户端中处理异步突变

使用 Apollo Server 时如何生成 schema.graphql 文件?