如何在 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 为
名称,但不是 true 或 false 或 null
这里的“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 中的数据进行排序?