Используйте те же поля для типа и ввода в GraphQL - PullRequest
0 голосов
/ 26 июня 2018

В одном из моих проектов, использующих GraphQL, я определяю type и input с теми же полями.

отл.

type SomeType {
    name: String
    id: String
}

input SomeInput {
    name: String
    id: String
}

Это кажется излишним, поскольку мне приходится определять одни и те же поля дважды. Можно ли определить набор полей, и оба поля содержат SomeType и SomeInput? Это будет работать аналогично наследованию в объектно-ориентированном программировании, где у вас будет некоторая база, и в идеале каждый из них будет наследовать от нее.

например, это может выглядеть так:

SomeBase {
    name: String
    id: String
}

type SomeType extends SomeBase {}

input SomeInput extends SomeBase {}

Возможно ли это? Если да, то как бы вы достигли этого?

Заранее спасибо.

1 Ответ

0 голосов
/ 26 июня 2018

Я не уверен, поддерживает ли graphql наследование, но есть интерфейсы. В вашем примере:

interface IUser {
  name: String!
  id: String!
} 

type User implements IUser {
  name: String
  id: String
}

type UserInput implements IUser {
  name: String
  id: String
}

Это, конечно, не уменьшит шаблон, но, по крайней мере, гарантирует, что вы можете поддерживать общий контракт для типов.

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