如何在Directus的REST请求中正确使用groupby、alias与aggregate功能
Directus v9.0.0-rc.93 聚合/分组/别名不生效问题解决方案
问题场景
使用Directus v9.0.0-rc.93版本发起API请求,尝试实现聚合、分组及别名设置功能,严格按官方文档操作后功能无法生效,仅返回原始字段的行数据。
请求截图:
返回响应如下:
{ "meta": { "total_count": 9, "filter_count": 8 }, "data": [ { "userid": 1, "earnpoints": 1000, "cardcolor": "#E35169" }, { "userid": 1, "earnpoints": 1000, "cardcolor": "#F7971C" }, { "userid": 1, "earnpoints": 1000, "cardcolor": "#9E8DE4" }, { "userid": 1, "earnpoints": 10, "cardcolor": null }, { "userid": 1, "earnpoints": 5, "cardcolor": null }, { "userid": 1, "earnpoints": 10, "cardcolor": null }, { "userid": 1, "earnpoints": 5, "cardcolor": null }, { "userid": 1, "earnpoints": 3505, "cardcolor": null } ] }
问题原因
- Directus v9.0.0-rc.93属于早期预发布候选版本,聚合、分组、别名功能在该版本中存在已知未修复缺陷,相关功能直到v9.0.0正式版及之后的稳定版本才完成完整适配,官方公开文档的参数规则是对齐正式版的,直接套用自然无法在该rc版本上生效。
- 若请求参数配置不符合rc.93版本的特殊语法规则,或
fields参数中保留了非分组、非聚合的原始字段,也会导致聚合逻辑不触发,直接返回原始行数据。
解决方案
方案1(推荐):升级Directus版本
直接升级到v9.0.0正式版或更高的稳定版本,该版本已修复所有聚合查询相关缺陷,参数逻辑和官方文档完全对齐,按文档配置即可正常使用聚合、分组、别名功能。
方案2(暂不升级适配rc.93版本)
调整请求参数适配该版本的特殊规则:
- 移除
fields参数中的非分组、非聚合字段,避免触发原始行数据返回逻辑 - 聚合参数按照
aggregate[函数名][字段名]=别名格式配置,比如计算earnpoints的总和并设置别名为total_earn,参数为aggregate[sum][earnpoints]=total_earn - 分组参数按照
group[]=字段名格式配置,比如按userid分组,参数为group[]=userid - 普通字段重命名的别名配置按照
alias[新别名]=原字段名格式配置,比如将userid改名为uid,参数为alias[uid]=userid
内容的提问来源于stack exchange,提问作者Arpit Vasani
相关产品推荐
相关产品推荐

