【问题标题】:Should I order GraphQL results server side or client side?我应该订购 GraphQL 结果服务器端还是客户端?
【发布时间】:2019-11-20 22:00:19
【问题描述】:

我们在我们的一个内部项目中使用了 graphql-ruby:为 React Native Web 前端提供服务的 Rails API 后端。我很好奇在处理返回结果的排序方面什么被认为是最佳实践。

我看到的一个选项是我们同时提供order_directionfield_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

当然,另一种选择是按照预定义的方向(ASCDESC)提供所有结果,并让客户端自己重新排序。然而,这似乎非常低效。由于真正缺乏关于如何解决这个问题的信息,我很好奇什么被认为是最佳实践。

任何帮助表示赞赏!

【问题讨论】:

  • 在数据库级别排序总是更快。

标签: ruby-on-rails graphql graphql-ruby


【解决方案1】:

作为最佳实践,排序结果应尽可能位于服务器(数据库)的下方。

但是,据我了解,您在服务器端(GraphQL API)或前端(React Native 应用程序)的排序结果之间存在疑问,所以:

我建议为客户端应用程序提供一个选项,以按特定顺序获取结果并处理服务器 API 上的排序,这样客户端应用程序应该只显示结果而不需要花费时间处理它们。

【讨论】:

  • 感谢您的建议,马可!我认为你是对的,这是最有意义且效率最高的。
  • 当然@ianbayne,如果它有帮助,不要忘记接受答案。
  • 谢谢,@Marco,我对 Stackoverflow 还不是很熟悉。
  • 别担心,我们随时为您提供帮助 :) 这里有一份指南,可以为您的未来提供帮助 stackoverflow.com/help/someone-answers
猜你喜欢
  • 2011-12-06
  • 2012-09-22
  • 2012-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-23
  • 2010-09-29
相关资源
最近更新 更多