Мы используем 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) и изменение порядка клиентом. Однако это кажется очень неэффективным. Поскольку существует реальная нехватка информации о том, как подойти к этому, мне любопытно, что считается лучшей практикой.
Любая помощь приветствуется!





В соответствии с передовой практикой упорядочивание результатов должно производиться как можно ниже по серверу (базе данных).
Но, насколько я понимаю, вы задаетесь вопросом, упорядочивать ли результаты на стороне сервера (GraphQL API) или на стороне интерфейса (приложение React Native), поэтому:
Я бы рекомендовал предоставить клиентскому приложению возможность получать результаты в определенном порядке и обрабатывать сортировку в API-интерфейсе сервера, таким образом, клиентское приложение должно отображать только результаты без необходимости тратить время на их обработку.
Спасибо за предложение, Марко! Я думаю, вы правы, что это наиболее разумно и с высочайшим уровнем эффективности.
Конечно, @ianbayne, не забудьте принять ответ, если он будет полезен.
Спасибо, @Marco, я еще не очень хорошо знаком со Stackoverflow.
Не беспокойтесь, мы здесь, чтобы помочь :) вот руководство, которое может помочь вам в будущем stackoverflow.com/help/someone-answers
Заказ на уровне базы данных всегда будет быстрее.