Схема GraphQL: перечисление или false

#graphql

#graphql

Вопрос:

Есть ли способ указать свойство, значением которого является либо enum значение, либо Boolean a? Это не сработало:

 enum PassPermission { request, verify, view, modify }

type Permissions
{
    pass: PassPermission! | Boolean!
}
  

И ни один из них не сделал этого:

 enum PassPermission { request, verify, view, modify }

union PassPermissionOrFalse = PassPermission | Boolean

type Permissions
{
    pass: PassPermissionOrFalse!
}
  

Но я хочу передать в своей схеме, что значением pass всегда будет либо одно из этих четырех строковых значений, либо false .

Ответ №1:

Для достижения этой цели вы могли бы использовать типы объединения. Но, как указано в документации:

Обратите внимание, что члены типа объединения должны быть конкретными типами объектов; вы не можете создать тип объединения из интерфейсов или других объединений.

Таким образом, вы не можете использовать enum или подобные скаляры Boolean при построении union типа, но вы могли бы сделать что-то вроде:

 enum permission { request, verify, view, modify }

type PassPermission {
  permissions: permission
}

type PassFalse {
  value: Boolean
}

union Permissions = PassPermission | PassFalse
  

Таким образом, тип Permissions может иметь один из 2 типов PassPermission или PassFalse .