问题描述
当前 ObjectUI 前端调用 /api/v1/analytics/query 时,聚合参数 measures 传递的是对象数组(如:[{ field: 'amount', function: 'sum' }]),而后端 memory-analytics 服务期望为字符串数组(如:['amount_sum'] 或 'count')。目前格式不对,会导致后端 resolveMeasure 方法执行 t.split('.') 时 TypeError("t.split is not a function")。
影响范围
- 所有仪表盘、报表、对象视图等涉及分组/聚合数值分析的前端功能
- MSW/mock/本地开发环境下也会出现
复现方法
- 本地或 vercel 运行 ObjectUI 并打开任意含统计图表/仪表盘的页面
- 查询接口 /api/v1/analytics/query 返回 500,后端日志报错
t.split is not a function
分析
-
objectstack-ai/objectui 的 data-objectstack/src/index.ts 中 aggregate() 方法构造 payload 时:
measures: [{ field: params.field, function: params.function }],
应修改为后端 cube 的 measure key(如 amount_sum、count 等)。
-
buildCubesFromConfig 生成的 measure 命名规范为 ${field}_${function},计数为 count。
修复建议
受影响文件
- packages/data-objectstack/src/index.ts
参考后端实现
附件
- 典型报错:
{
"name": "TypeError",
"message": "t.split is not a function",
"stack": "TypeError: t.split is not a function\n at tX.resolveMeasure ... "
}
问题描述
当前 ObjectUI 前端调用 /api/v1/analytics/query 时,聚合参数 measures 传递的是对象数组(如:
[{ field: 'amount', function: 'sum' }]),而后端 memory-analytics 服务期望为字符串数组(如:['amount_sum']或'count')。目前格式不对,会导致后端 resolveMeasure 方法执行t.split('.')时 TypeError("t.split is not a function")。影响范围
复现方法
t.split is not a function分析
objectstack-ai/objectui 的 data-objectstack/src/index.ts 中 aggregate() 方法构造 payload 时:
应修改为后端 cube 的 measure key(如 amount_sum、count 等)。
buildCubesFromConfig 生成的 measure 命名规范为
${field}_${function},计数为 count。修复建议
在 aggregate() 里构造 measures 时,转换为字符串格式:
${field}_${function}例:
dimensions 也应适配为字符串(如 groupBy 字段非 "_all" 时
${resource}.${groupBy})。受影响文件
参考后端实现
附件
{ "name": "TypeError", "message": "t.split is not a function", "stack": "TypeError: t.split is not a function\n at tX.resolveMeasure ... " }