* 描述问题
有多对多数组字段所在的表被间接关联添加时会报错,比如:
有表A、表B、表C和表D
表C.字段1是引用表D.ID的多对多数组字段
表B.字段1是引用表C.ID的多对一字段
表A.字段1是引用表B.ID的多对多字段
此时,在表A的添加或编辑区块中添加表B的关联数据时,提交即为报 "oldValue.sort is not a function"的错误
TypeError: oldValue.sort is not a function
at eval (eval at <anonymous> (\nocobase\packages\core\database\src\fields\array-field.ts:2:1203), <anonymous>:1:10)
at AsyncEmitter.sortValue (\nocobase\packages\core\database\src\fields\array-field.ts:33:33)
at run (\nocobase\packages\core\utils\src\mixin\AsyncEmitter.ts:29:19)
at <anonymous> (\nocobase\packages\core\utils\src\mixin\AsyncEmitter.ts:52:18)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at AsyncEmitter.emitAsync (\nocobase\packages\core\utils\src\mixin\AsyncEmitter.ts:50:7)
at Function.<anonymous> (\nocobase\packages\core\database\src\model-hook.ts:74:9)
at Function.runHooks (\nocobase\node_modules\sequelize\src\hooks.js:131:7)
at model.save (\nocobase\node_modules\sequelize\src\model.js:4090:7)
at Function.create (\nocobase\node_modules\sequelize\src\model.js:2305:12)
原因是多对多数组的字段在数据库中是以JSON格式存储的数组,后台代码会将空值转换为空对象:{},而不是空数组:[ ],因此在调用sort函数会报错
* 运行环境
- NocoBase 版本:v1.4.30
- 数据库种类与版本: MySQL 8.x
- 操作系统:
-浏览器及版本
- 部署方式:Docker
- Docker 镜像版本:nocobase/nocobase:latest
- NodeJS 版本: