Как использовать GraphQL Enums на неанглийском языке? postgraphile

Я использую postgraphile (библиотека, которая упаковывает вашу базу данных Postgres с помощью GraphQL api), и у меня есть некоторые перечисления на иврите.

Как написано в спецификации GraphQL, значения Enum должны быть именами, которые ограничены подмножеством ASCII с помощью следующего регулярного выражения:

/ [_ A-Za-Z][_0-9A-Za-Z]*/

Я хочу использовать тип перечисления Postgres для проверки моих столбцов перечисления. Postgraphile преобразует перечисления Postgres в тип GraphQLEnum и выдает ошибку, если значение не соответствует упомянутому выше стандарту имени (поскольку некоторые перечисления на иврите).

Как бы вы использовали значения enum на другом языке?

1 ответ

Решение

Как вы заявили, в настоящее время спецификация GraphQL допускает только значения enum, соответствующие Name регулярное выражение:

EnumValue:: Name но нет true, или же false или же null

- https://facebook.github.io/graphql/draft/

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

- https://facebook.github.io/graphql/draft/

Я думаю, что желание выразить перечисления на других языках неотразимо; Я предлагаю вам помочь сформулировать предложение для решения этих проблем в самой спецификации GraphQL, что вы можете сделать в хранилище спецификаций GraphQL на GitHub. По этой теме уже есть вопрос, в который вы могли бы внести свой вклад:

https://github.com/facebook/graphql/issues/256

С осторожностью (и с использованием ресурсов, таких как UAX # 31), возможно, можно расширить синтаксис GraphQL, чтобы включить многоязычные идентификаторы, не прибегая к такому подходу, как "punycode".

Другие вопросы по тегам