Вложенные аргументы запроса GraphQL?

Можно ли при создании GraphQL API разрешить аргументы для свойств вложенных запросов? т.е. я реализовал orderBy arg для tasks запроса верхнего уровня, например:

query {
  tasks(orderBy: { order: asc }) {
    title
  }
}

и это работает нормально, но я хотел бы иметь возможность запросить collection из tasks и добавить аргументы запроса во вложенное свойство tasks следующим образом:

query {
  collection {
    id
    name
    tasks(orderBy: { order: asc }) {
      title
    }
  }
}

Он не распознает аргументы по умолчанию, поэтому я предполагаю, что если это возможно, то требуется дополнительная настройка. Я получаю эту ошибку, когда пытаюсь выполнить этот запрос: "Unknown argument \"orderBy\" on field \"tasks\" of type \"Collection\"."

P.S. Я использую graphql-yoga с prisma на сервере.


person mrseanbaines    schedule 28.09.2020    source источник
comment
Возможно. Не могли бы вы поделиться своими настройками, если возможно, например, используете ли вы Nexus с Prisma?   -  person Ryan    schedule 29.09.2020


Ответы (2)


Вы используете nexus / schema и nexus-plugin-prisma? Если вы это сделаете, вам нужно активировать упорядочивание в своей модели задачи сбора, как это t.model.tasks({ ordering: true })

person Mickaël Boidin    schedule 29.09.2020

Ага! В конце концов, я все понял. Мне просто нужно было передать args вызову tasks в Collection.tasks преобразователе:

Collection: {
  tasks: (parent, args, context) => {
    const { id } = parent

    const collection = context.prisma.collection.findOne({
      where: { id },
    })

    return collection.tasks(args) // ← pass in `args` here
  },
},

Мне также нужно было добавить параметр orderBy в мою схему для поля Collection.tasks (раньше он был у меня только на Query.tasks)

person mrseanbaines    schedule 29.09.2020