Есть ли способ сортировки / разбиения на страницы значения из внешнего объекта с помощью Apollo Federated GraphQL?

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

Я использую федерацию-демо, чтобы проиллюстрировать свой вопрос, но немного проще. Имея только службу учетной записи и службу отзывов и добавив karma в поле Пользователя, можно ли фильтровать отзывы по карме Пользователя.

Сервис учетной записи, добавляющий пользователю карму int:

  extend type Query {
    me: User
  }
  type User @key(fields: "id") {
    id: ID!
    name: String
    username: String
    karma: Int!
  }

Сервис отзывов, добавление отзывов Запрос:

  extend type Query {
    reviews(minKarma: Int): [Review!]!
  }
  type Review @key(fields: "id") {
    id: ID!
    body: String
    author: User @provides(fields: "username")
    product: Product
  }
  extend type User @key(fields: "id") {
    id: ID! @external
    username: String @external
    karma: Int! @external
    reviews: [Review]
  }
  extend type Product @key(fields: "upc") {
    upc: String! @external
    reviews: [Review]
  }

В моем преобразователе для Query.reviews я хочу отфильтровать любой обзор, в котором review.author.karma меньше указанного minKarma.

Как мне сообщить шлюзу, что, когда minKarma указывается во входных данных Query, я хочу, чтобы сначала запрашивалась служба Account, а представление пользователей передавалось в службу Reviews, при этом карма каждого пользователя, прикрепленного к обзору, как автор, так что я могу сделать фильтр?

Возвращаясь к вопросу в верхней части этого сообщения, могу ли я отметить minKarma поле как требующее User.karma?

1 ответ

Меня тоже мучают эти вопросы.

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