我应该订购 GraphQL 结果服务器端还是客户端?
Posted
技术标签:
【中文标题】我应该订购 GraphQL 结果服务器端还是客户端?【英文标题】:Should I order GraphQL results server side or client side? 【发布时间】:2019-11-20 22:00:19 【问题描述】:我们在我们的一个内部项目中使用了 graphql-ruby:为 React Native Web 前端提供服务的 Rails API 后端。我很好奇在处理返回结果的排序方面什么被认为是最佳实践。
我看到的一个选项是我们同时提供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】:作为最佳实践,排序结果应尽可能位于服务器(数据库)的下方。
但是,据我了解,您在服务器端(GraphQL API)或前端(React Native 应用程序)的排序结果之间存在疑问,所以:
我建议为客户端应用程序提供一个选项,以按特定顺序获取结果并处理服务器 API 上的排序,这样客户端应用程序应该只显示结果而不需要花费时间处理它们。
【讨论】:
感谢您的建议,马可!我认为你是对的,这是最有意义且效率最高的。 当然@ianbayne,如果它有帮助,不要忘记接受答案。 谢谢,@Marco,我对 *** 还不是很熟悉。 别担心,我们随时为您提供帮助 :) 这里有一份指南,可以为您的未来提供帮助 ***.com/help/someone-answers以上是关于我应该订购 GraphQL 结果服务器端还是客户端?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Apollo 中关闭 GraphQL 订阅的套接字连接