我应该在服务器端还是客户端订购 GraphQL 结果?
Should I order GraphQL results server side or client side?
我们在我们的一个内部项目中使用 graphql-ruby:RailsAPI 后端服务于 React Native Web 前端。我很好奇什么是处理返回结果排序的最佳实践。
我看到的一个选项是我们同时提供 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 Application) 排序结果之间产生疑问,因此:
我建议为客户端应用程序提供一个选项,以按特定顺序获取结果并处理服务器上的排序 API,这样客户端应用程序应该只显示结果而不需要花时间处理它们。
我们在我们的一个内部项目中使用 graphql-ruby:RailsAPI 后端服务于 React Native Web 前端。我很好奇什么是处理返回结果排序的最佳实践。
我看到的一个选项是我们同时提供 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 Application) 排序结果之间产生疑问,因此:
我建议为客户端应用程序提供一个选项,以按特定顺序获取结果并处理服务器上的排序 API,这样客户端应用程序应该只显示结果而不需要花时间处理它们。