Измените открытую схему graphql с помощью директив

Директивы хороши для изменения поведения преобразователей, но есть ли способ напрямую изменить открытую схему с их помощью?

Пример

ожидаемая схема суперпользователя

type Query {
  getBooks: [Book]
  getAuthors: [Author]
}

ожидаемая схема обычного пользователя

type Query {
  getBooks: [Book]
}

одно определение, чтобы построить их все

type Query {
  getBooks: [Book] @allow(scopes: ["superuser"])
  getAuthors: [Author]
}

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

Непонятно, чего вы пытаетесь достичь. "поскольку я бы построил одну схему для каждой возможной области" ... так вы поддерживаете две отдельные схемы и / или конечные точки? Или вы просто хотите изменить поведение поля в зависимости от того, является ли пользователь суперпользователем или обычным пользователем?

Daniel Rearden 11.12.2018 15:00

да, я хочу открыть две разные конечные точки. Поведение можно было бы выполнить с резолверами, но я хочу, чтобы поля полностью исчезли из схемы

Johannes Merz 11.12.2018 15:02

Тогда мне все еще неясно, какое поведение вы пытаетесь реализовать. Вы пытаетесь поддерживать единую схему для обеих конечных точек? Не могли бы вы предоставить дополнительные сведения об ожидаемом поведении и почему то, что вы уже пробовали, не работает?

Daniel Rearden 11.12.2018 15:05
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
0
3
33
0

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