Как определить запрос graphql в схеме только с одним из двух необходимых параметров

У меня есть graphQL ApolloServer, возвращающий набор транзакций с разбивкой на страницы для учетной записи. Вот фрагмент моей схемы:

type Account implements Node {
  id: ID!
  name: String!
}
type Transaction implements Node {
  id: ID!
  name: String!
  accountId: ID!
}

В спецификации реле https://relay.dev/graphql/connections.htm указано поле, которое возвращает тип соединения, может принимать параметры: 1) before и last или 2) after и first

Это означает, что они не могут быть необязательными без определения операции по умолчанию after или before.

Для запроса, который обрабатывает только случай after, я бы сделал обязательное после этого:

type Query {
  accounts: [Account]!
  transactions(accountId: ID!,after: String!, first: Int = 10 ): TransactionsBelongToAccountConnection
}

Но для случая, который обрабатывает как before, так и after, мне нужно было бы сделать все четыре из этих параметров необязательными и объявить один из режимов after или before по умолчанию:

type Query {
  accounts: [Account]!
  transactions(accountId: ID!, before: Sting, last: Int = 10, after: String, first: Int = 10 ): TransactionsBelongToAccountConnection
}

или (мой вопрос) в graphql есть способ сделать ровно один из двух необходимых параметров?


person NULL pointer    schedule 04.05.2020    source источник
comment
Нет встроенного способа сделать это. Ваши аргументы должны быть обнуляемыми, а логика для требования одного или другого должна быть размещена внутри вашего преобразователя.   -  person Daniel Rearden    schedule 04.05.2020
comment
Спасибо, Дэниел Рирден, это дублирующий вопрос. Я искал контекст, специфичный для реагирования на ретрансляционное соединение, должен был просто подумать об этом как о проблеме с графом.   -  person NULL pointer    schedule 04.05.2020