В graphql есть ли способ вернуть данные, которые удовлетворяют всем фильтрам на родительском и дочернем элементах? - PullRequest
0 голосов
/ 06 января 2020

Структура моего запроса выглядит следующим образом:

{
  parent(filter...){
    edges{
      node{
        field1
        child(filter...){
          edges{
            node{
              field2
            }
          }
        }
      }
    }
  }
}

Во внешнем интерфейсе я объединю родительский элемент с дочерним и отобразим в таблице. Например, если у родителя три дочерних элемента, он отобразит три строки («field1 child1_field2», «field1 child2_field2», «field1 child3_field2»). Но если для этого родителя нет дочернего элемента, я вообще не хочу отображать эту строку. Я знаю, что могу отфильтровать их во внешнем интерфейсе. Но с релейной пагинацией, если я загружу еще 50 родителей, после фильтрации по дочерним элементам, может остаться менее 50 строк. В результате он будет отображать различное количество строк в каждом «load more». Есть ли способ вернуть данные, которые удовлетворяют как родительский фильтр, так и дочерний фильтр. Если нет, то как лучше всего решить эту проблему?

1 Ответ

0 голосов
/ 06 января 2020

Существует несколько способов фильтрации внутреннего содержимого (в зависимости от вашей структуры) перед возвратом данных в внешний интерфейс. Например, если вы используете Java Stream в конце, то выполните stream.skip (start) .limit (numResults). Если вы используете Rx Java, вы всегда можете применить .filter () или .take () и т. Д. c

Если возможно, вы должны объединить родительский / дочерний элемент со структурой на серверной части перед отправкой это передний конец. Если нет, то вы в конечном итоге сделаете тонну звонков на сервер для каждого родителя, чтобы узнать, есть ли у него дети (до тех пор, пока не будет достигнут требуемый лимит «50»).

...