postgresql - 如何在非英语语言中使用 GraphQL 枚举?后记
问题描述
我正在使用 postgraphile(一个使用 GraphQL api 包装 Postgres 数据库的库),并且我有一些希伯来语枚举。
正如 GraphQL 规范中所写,枚举值必须是名称 - 仅限于具有此正则表达式的 ASCII 子集:
/[_A-Za-z][_0-9A-Za-z]*/
我想使用 Postgres 枚举类型来对我的枚举列进行验证。Postgraphile 将 Postgres 枚举转换为 GraphQLEnum 类型,当值不在上述名称标准中时会导致错误(因为某些枚举是希伯来语)。
您将如何在不同的语言中使用枚举值?
解决方案
正如您所说,目前 GraphQL 规范仅允许与正则Name
表达式匹配的枚举值:
EnumValue
::Name
但不是true
,或false
或null
-- https://facebook.github.io/graphql/draft/#sec-Enum-Value
Name
::/[_A-Za-z][_0-9A-Za-z]*/
我认为用其他语言表达枚举的愿望是令人信服的。我建议你帮助制定一个提案来解决 GraphQL 规范本身中的这些问题,你可以在 GitHub 上的 GraphQL 规范存储库中进行。已经有一个关于这个主题的问题悬而未决,您可以将您的见解贡献给:
https://github.com/facebook/graphql/issues/256
小心(并使用UAX#31之类的资源),可以扩展 GraphQL 的语法以启用多语言标识符,而无需求助于诸如“punycode”之类的方法。
推荐阅读
- python - 从 while True 打印值:在 Python 中
- c++ - 为什么 unsigned char 的默认初始化行为与其他数据类型不同?
- cross-validation - 在训练集上使用 k 折交叉验证后,是否需要额外的验证集?
- ruby-on-rails - 在 require 方法中免除属性
- python - 数据库连接导致 Dialogflow 的 Python 程序崩溃
- kettle - java.lang.OutOfMemoryError:水壶中的 Java 堆空间
- java - 如何在java中获取XML的一个父节点下的节点名称
- python - 如何在数据框中的每一行之间插入一行?
- angular - 如何防止 ngOnInIt 被再次读取?
- plotly-dash - Dash Plotly Graph(Dash 核心组件抛出错误)