graphql 计算指令之 @sortBy:查询中实现列表字段排序
问题背景
在使用 graphql 进行查询的时候,很多场景需要对 list 类型字段进行排序,典型如根据时间戳排序指标数据、根据销量排序商品数据。
如下查询,如果数据源是按照 id 排序返回、而非销量,则需要硬编码实现商品排序。
复制代码
解决方案
graphql 提供了指令机制,该机制类似于 java 注解,可用于 graphql 查询执行能力的动态拓展。
定义对列表数据进行排序的指令:
复制代码
comparator:比较表达式、表达式参数为每个列表元素,值越大越靠后;
reversed:是否进行逆序排序;
表达式结果为 null 的元素总是排在末尾。
使用指令排序的查询为:
复制代码
该能力可通过graphql-java-calculator进行实现,该组件基于指令系统、为 graphql 查询提供数据编排、动态计算和控制流的能力。实现代码如下:
复制代码
输出:
复制代码
完整示例参考Example。
联系反馈
欢迎大家试用graphql-java-calculator,笔者一直从事 graphql 的平台化工作,graphql-java组件的活跃 contributor,期待使用反馈建议。
其他文章:
版权声明: 本文为 InfoQ 作者【coder_xy】的原创文章。
原文链接:【http://xie.infoq.cn/article/e1d366d0e8ebfa294c9bf5012】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论