В graphql отфильтруйте несколько значений в одном свойстве и разбейте на страницы - PullRequest
0 голосов
/ 07 июня 2018

У меня возникла следующая потребность: используя синтаксис graphql, отфильтруйте коллекцию по нескольким значениям в одном и том же свойстве и разбейте на страницы результаты

Учитывая следующую сущность ...

/** ... APIResource annotations
 */
class RssFeed {
    /** ... APIProperty annotations
    */
    private $category;

    /** ... APIProperty annotations
    */
    private $url; 

    // ... getters
    // ... setters
}

Я хочу отфильтровать коллекцию RssFeed, свойство category которой равно "CategoryA" или "CategoryB", и разбить результаты на страницы.

Насколько мне известно, graphql не позволяет писать синтаксис, аналогичныйна

rssfeed(category: ["CategoryA","CategoryB"]) 
{
    edges { node {
    url,
    category
    } }
}

Поэтому мне нужно разделить операцию поиска, используя различные запросы graphql (в теле), такие как

rssFeedsA: rssfeed(category: "CategoryA") 
{
    edges { node {
    url,
    category
    } }
},
rssFeedsB: rssfeed(category: "CategoryB") 
{
    edges { node {
    url,
    category
    } }
}

Но я не могу разбить на страницы глобальные результаты.

Итак, мой вопрос, есть ли решение для фильтрации по нескольким значениям и разбивки на страницы?

1 Ответ

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

Я не уверен, откуда возникла путаница, но ничто не мешает вам делать первый пример, вам просто нужно, чтобы тип ввода категории был массивом строк.Хотя я бы лично переименовал его в categories:

type Query {
    rssFeed(
        first: Int, 
        last: Int, 
        before: String, 
        after: String, 
        categories: [String!]
    ): SomeConnection
}

Как вы на самом деле реализуете логику распознавателя, чтобы она работала, решать вам, но, скорее всего, она будет немного отличаться от того, каквы бы сделали это для одной категории

...