我应该订购GraphQL结果服务器端还是客户端?

时间:2019-07-11 08:31:42

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

我们在一个内部项目中使用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)提供所有结果,并让客户自己重新排序。但是,这似乎效率很低。由于实际上缺乏有关如何解决此问题的信息,我很好奇什么是最佳实践。

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

  

作为最佳实践,应使订购结果尽可能远地位于服务器(数据库)的下方。

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

我建议为客户端应用程序提供一个选项,以特定的顺序获取结果并处理Server API上的排序,这样客户端应用程序应只显示结果,而无需花费时间来处理它们。 / p>

希望有帮助。