Стоит ли заказывать результаты GraphQL на стороне сервера или на стороне клиента? - PullRequest
0 голосов
/ 11 июля 2019

Мы используем graphql-ruby в одном из наших внутренних проектов: бэкэнд API Rails, обслуживающий веб-интерфейс React Native. Мне любопытно, что считается лучшей практикой в ​​отношении упорядочения возвращаемых результатов.

Один вариант, который я вижу, заключается в том, что мы предоставляем оба аргумента order_direction и field_to_order_by, и клиент должен явно указывать каждый из них для запроса (с предоставлением значений по умолчанию, конечно).

Один из способов справиться с этим будет

if (sort_column = args[:sort_by])
  if (direction = args[:direction])
    users = users.order(sort_column.to_sym => direction.to_sym)
  else
    users = users.order(sort_column.to_sym) # default sort order
  end
end

Другим вариантом, конечно, было бы предоставить все результаты в заранее заданном направлении (ASC или DESC) и переупорядочить самого клиента. Это кажется очень неэффективным, однако. Поскольку существует реальная нехватка информации о том, как подойти к этому, мне любопытно, что считается лучшей практикой.

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 11 июля 2019

В качестве наилучшей практики следует упорядочивать результаты как можно дальше от сервера (базы данных).

Но, насколько я понимаю, вы задаетесь вопросом между упорядочиванием результатов на стороне сервера (GraphQL API) или на стороне внешнего интерфейса (React Native Application), поэтому:

Я бы рекомендовал предоставить клиентскому приложению возможность получать результаты в определенном порядке и обрабатывать сортировку в API-интерфейсе сервера, чтобы клиентское приложение отображало результаты только без необходимости тратить время на их обработку.

Надеюсь, это поможет.

...