如何修改TypeORM中materialized-path树自动生成的mpath字段名?
TypeORM物化路径树自定义mpath列名方法
完全可以修改,不需要改动框架源码,使用TypeORM内置装饰器就能完成配置:
- 声明物化路径模式的树实体时,只要显式添加带
@MaterializedPathColumn()装饰器的属性,再通过@Column的name配置项指定你需要的数据库实际列名,框架就会用你配置的列替代默认生成的mpath列,路径自动维护的逻辑和默认行为完全一致。
示例代码:
import { Entity, Tree, Column, PrimaryGeneratedColumn, TreeChildren, TreeParent, MaterializedPathColumn } from "typeorm"; @Entity() @Tree("materialized-path") export class FileNode { @PrimaryGeneratedColumn() id: number; @Column() fileName: string; @TreeParent() parent: FileNode; @TreeChildren() children: FileNode[]; // 自定义物化路径列,替代默认生成的mpath @MaterializedPathColumn() // name字段填入你想要的实际列名,示例中设置为tree_path @Column({ name: "tree_path", type: "varchar", length: 500 }) path: string; }
注意事项
- 该列的值由TypeORM在节点增删改操作时自动维护,不需要业务代码手动赋值
- 列类型建议使用字符串类型,长度根据业务中树的最大深度设置足够值即可,避免路径内容截断
- 如果需要同时自定义树层级统计列的名称,使用
@TreeLevelColumn()装饰器搭配@Column配置即可,逻辑和上述配置一致 - 显式配置该列后,框架不会再自动生成默认的
mpath列,不需要额外做排除配置
内容的提问来源于stack exchange,提问作者Caio Queiroz
相关产品推荐
相关产品推荐

