зависимости между 2 полями в типе схемы в graphql - PullRequest
0 голосов
/ 29 января 2020

Я ищу способ описать зависимость уровня chema между полями типа объекта, например:

    type foo{    
       obj1: MyOBJ1    
       obj2: MyOBJ2 
    }

в данных бэкэнда только obj1 или obj2 могут быть преобразованы в пиксели, в то время как другие должны быть нулевыми. они никогда не могут быть заполнены вместе или быть нулевыми вместе. какой мой лучший подход здесь? спасибо

1 Ответ

0 голосов
/ 29 января 2020

Типы всегда указываются c для отдельного поля. Поле по умолчанию может иметь значение NULL или оно может быть ненулевым. В этом случае GraphQL проверит ваш вывод на предмет обнуляемости. Любая проверка, выходящая за рамки этого, должна проводиться на уровне решателя.

При этом можно добиться аналогичного эффекта, используя объединение или интерфейс.

type Query {
  foo: Foo
}
type Foo1 {    
  obj1: MyObj1!
}
type Foo2 {
  obj2: MyObj2! 
}
union Foo = Foo1 | Foo2

Делая каждое поле незаполненным null гарантирует, что для данного типа , поле не может быть пустым. Во время выполнения поле с типом Foo всегда будет преобразовываться в один из двух конкретных типов (Foo1 или Foo2). Поэтому, если мы запросим поле foo, мы получим либо

{
  "foo": {
    "obj1": {...}
  }
}

, либо

{
  "foo": {
    "obj2": {...}
  }
}

Обратите внимание, что в этом случае obj1 или obj2 будет не будет нулевым в ответе - скорее, оно вообще будет отсутствовать в ответе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...